多行正则表达式在线工作,而不是PHP

时间:2016-04-14 06:12:35

标签: php regex

这个特定模式与我在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字符串中删除任何空格,我仍然没有得到匹配。

2 个答案:

答案 0 :(得分:2)

您的代码运行正常。但是,存在一些语法问题,并且您也没有保存返回值

$text=preg_replace($regex, '', $text);
^

<强> Fiddle

<强>输出

abc

         123

这些空格是因为它们在原始字符串中,并且您不会用任何东西替换它们。

答案 1 :(得分:1)

好像你没有将替换结果分配给任何东西。如果你不想以$ text结尾,请务必将结果分配给它:

$text=preg_replace($regex, '', $text);

此致