我目前正在论坛上工作,希望使用正则表达式在帖子中查找表格并将其转换为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,它也能很好地工作。
修改:添加了代码示例
答案 0 :(得分:0)
您需要转义正则表达式的反斜杠才能在PHP字符串中使用:
$pattern = "/^(\\[table\\]\\s*)^((?:[^\\|\\r\\n]+[\\|\\n])+)^(\\[\\/table\\])$/m";
如果您想继续使用像regexr这样的网站,请尝试使用regex101.com。编写正则表达式后,您可以单击Tools > code generator
,它将显示可以在PHP中使用的代码。