PHP将圣经搜索字符串解析/爆炸成变量或标记
发布时间:2020-12-13 21:51:27 所属栏目:PHP教程 来源:网络整理
导读:我需要帮助用 PHP将圣经搜索字符串分解为变量或标记.我想得到这篇文章中提供的解决方案的明确用法示例: PHP preg_match bible scripture format. 编辑:章节和经文(从,到)是可选的. 例如:我希望能够拆分以下任何字符串: 'John 14:16–17'; //Book Chapter
我需要帮助用
PHP将圣经搜索字符串分解为变量或标记.我想得到这篇文章中提供的解决方案的明确用法示例:
PHP preg_match bible scripture format.
编辑:章节和经文(从,到)是可选的. 例如:我希望能够拆分以下任何字符串: 'John 14:16–17'; //Book Chapter:FromVerse-ToVerse 'John 14:16'; //Book Chapter:FromVerse 'John 14'; //Book Chapter 'John'; //BOOK 下列: <?php $string = 'Exodus 1:3-7'; // Where Exodus is the book,1 the chapter number,3 the starting verse and 7 the ending verse. [Book Chapter:StartVerse-EndVerse] $pattern = '/[ :-]/'; list( $book,$chapter,$from,$to ) = preg_split($pattern,$string ); echo $book; 允许我获取nbook名称:Exodus.我也可以用同样的方式检索章节号(echo $chapter)等. 我对这个解决方案的问题是当书名有多个单词时. 在上面链接的帖子中建议这个正则表达式模式更完整: /w+s?(d{1,2})?(:d{1,2})?([-–]d{1,2})?(,sd{1,2}[-–]d{1,2})?+$/ 我想我的问题是如何使用这个模式或类似的模式来分割搜索字符串,如上所述. 这里讨论了类似的问题:PHP problems parsing a bible book string,但我在修改模式时遇到了一些麻烦.我不断得到如下错误:未定义的偏移量:3 … 我很感激你的帮助 解决方法
我不会用一个正则表达式做到这一点.
在阅读维基百科中的Bible-citation – Common formats section后,请参阅我的圣经解析器的想法: $holy_str = 'Jonny 5:1,4-5,17,21;'; // split verses from book chapters $parts = preg_split('/s*:s*/',trim($holy_str," ;")); // init book $book = array('name' => "",'chapter' => "",'verses' => array()); // $part[0] = book + chapter,if isset $part[1] is verses if(isset($parts[0])) { // 1.) get chapter if(preg_match('/d+s*$/',$parts[0],$out)) { $book['chapter'] = rtrim($out[0]); } // 2.) book name $book['name'] = trim(preg_replace('/d+s*$/',"",$parts[0])); } // 3.) verses if(isset($parts[1])) { $book['verses'] = preg_split('~s*,s*~',$parts[1]); } print_r($book); 输出(test at eval.in): Array ( [name] => Jonny [chapter] => 5 [verses] => Array ( [0] => 1 [1] => 4-5 [2] => 17 [3] => 21 ) ) 无论在这里,约翰福音14:16或约翰福音12:3,16-17 另见regex faq. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |