我正在替换给定字符串中的object标签
$matches = preg_replace("/<object(.+?)</object>/","replacing string",$str);
但它显示错误为
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'o'
出了什么问题?
答案 0 :(得分:1)
必须引用</object>
中的斜杠:<\/object>
,否则它会被解释为正则表达式的结尾,因为您要用斜杠分隔它。整行应该是:
$matches = preg_replace("/<object(.+?)<\\/object>/","replacing string",$str);
答案 1 :(得分:0)
在正则表达式中,正斜杠是正则表达式分隔符。在处理标记时,最好使用另一个分隔符(而不是用反斜杠转义它):
$matches = preg_replace("#<object(.+?)</object>#", "replacing string", $str);
还有其他分隔符。您可以使用任何非字母数字,非反斜杠,非空白字符。但是,在任何情况下都不应使用某些分隔符:|
,+
,*
和括号/括号,例如,因为它们经常在正则表达式中使用,并且会混淆人和让他们恨你。
顺便说一下,使用HTML的正则表达式是Bad Thing!
答案 2 :(得分:0)
将第一个字符作为分隔符char,将表达式与标志分开。因此:
"/[a-z]+/i"
...内部分为:
- Pattern: [a-z]+
- Flags: i
所以这个:
"/<object(.+?)</object>/"
...不是有效的正则表达式。试试这个:
"@<object(.+?)</object>@"