【发布时间】:2016-07-22 16:42:39
【问题描述】:
我目前在一个论坛上工作,想使用正则表达式来查找帖子中的表格并将它们转换为 BB-Code。我使用了一个网络评估器 (http://regexr.com) 并制定了一个正则表达式。
/^(\[table\]\s*)^((?:[^\|\r\n]+[\|\n])+)^(\[\/table\])$/m
用于检测表格的表格:
[table]
abc|def|gih
123|456|789
[/table]
但是当我通过 POST 和 <textarea> 将此文本传输到我的脚本时,在其上使用带有该模式的 preg_match_all 和 var_dump 结果我只会得到空数组。从逻辑上讲,替换功能也不起作用。
preg_match_all("/^(\[table\]\s*)^((?:[^\|\r\n]+[\|\n])+)^(\[\/table\])$/m", $_POST['test_string'], $tmp);
var_dump($tmp);
这个输出
array(4) { [0]=> array(0) { } [1]=> array(0) { } [2]=> array(0) { } [3]=> array(0) { } }
PS:我知道 regexr.com 是基于 JS 的,所以我尝试了一个基于 php 的 one,它也能完美运行。
编辑:添加代码示例
【问题讨论】:
-
你能贴一些代码吗?
-
据我所知,任何语言都需要转义字符串中的特殊字符。因此,首先尝试将“\”替换为“\\”。例如。 “\n”表示“换行”,“\\”表示单反斜杠。
标签: php regex preg-match-all