preg_replace():未知的修饰符

时间:2014-06-24 11:53:14

标签: php regex preg-replace

我有一个字母,存储在一个名为$txt的字符串中。每一行都由<p></p>代替。我想删除亲爱的......行,如果存在的话。

我试过了:

$text = preg_replace('/Dear.*/\<\/p\</',"",$text);

但我得到preg_replace(): Unknown modifier错误

2 个答案:

答案 0 :(得分:3)

/此处为正则表达式分隔符,因此preg_replace假设您的正则表达式为Dear.*\<\/p\</为修饰符。

您可以改为使用:

$text = preg_replace('/^<p>Dear.*<\/p>/m',"",$text);

m 修饰符使^与每行的开头匹配。

答案 1 :(得分:1)

正则表达式以分隔符启动,并以分隔符结束。在这里,您选择了分隔符/。第一个/启动正则表达式,下一个/结束正则表达式,后面的所有内容都是修饰符。

  /Dear.*/\<\/p\</
  ^      ^
start   end

并且\不是有效的修饰符。

选择不同的分隔符,或者转义正则表达式中的分隔符:

!Dear.*/\<\/p\<!
/Dear.*\/\<\/p\</

我不知道为什么你需要/开始。