这个特定模式与我在regex101上测试时匹配,但不在我的代码中。
/(?s)%if_something%.*%endif_something%/
有问题的代码:
$text = "abc
%if_something%
<p>Content to potentially remove</p>
%endif_something%
123";
$regex = "/(?s)%if_something%.*%endif_something%/"
preg_replace($regex, '', $text);
预期的行为是返回。
"abc
123"
我怀疑regex101不像PHP字符串那样处理空格和行格式,但即使从我的PHP字符串中删除任何空格,我仍然没有得到匹配。
答案 0 :(得分:2)
您的代码运行正常。但是,存在一些语法问题,并且您也没有保存返回值
$text=preg_replace($regex, '', $text);
^
<强> Fiddle 强>
<强>输出强>
abc
123
这些空格是因为它们在原始字符串中,并且您不会用任何东西替换它们。
答案 1 :(得分:1)
好像你没有将替换结果分配给任何东西。如果你不想以$ text结尾,请务必将结果分配给它:
$text=preg_replace($regex, '', $text);
此致