【发布时间】:2011-02-14 02:58:48
【问题描述】:
如何使用 preg_split() 来获取 [item:1] 和 [/item:1] 之间的值$query= [item:1] my content [/item:1];
这不起作用$match = preg_split('/[[item:1][\/item:1]]/', $query);echo $match[0];
输出应该只是“我的内容”。
更新:
$查询 = ' [page:1]你有第一页的内容[/page:1] [page:2]你有第二页的内容[/page:2] '; // 解析函数 函数 parse_page($page, $string) { // 非常重要的删除任何会搞砸解析的东西 $string = str_replace(array("\r", "\n", "\t", "\f"), array('', ''), $string); // 用页码测试字符串 preg_match('@\[page:'.$page.'\](.*?)\[/page:'.$page.'\]@', $string, $matches); // 如果匹配成功则返回匹配 如果($匹配){ 返回$匹配; }别的 { 返回假; } } // 如果页面被设置然后尝试获取它 如果(isset($_GET['p'])){ // 将返回的解析值设置为变量 $page_dump = parse_page(($_GET['p']), $query); // 检查是否匹配成功 如果($page_dump[1]){ 回声 $page_dump[1]; }别的 { 回声“0”; } }别的 { // 如果没有指定页面,则解析第 1 页。 $page_dump = parse_page('1', $query); 如果($page_dump[1]){ 回声 $page_dump[1]; }别的 { echo '没有页面 =('; } }【问题讨论】:
-
为什么要使用preg_split(),preg_match_all()会是更好的选择?
-
我更新了它以使其正常工作,但是当括号之间有大量文本转储时,它仍然存在问题,我认为这是由于隐藏字符,例如返回的 \n 和制表符的 \t
标签: php regex preg-split