只是我更换对象标记给定的字符串PHP:不能代替使用的preg_replace()
$matches = preg_replace("/<object(.+?)</object>/","replacing string",$str);
中却是露出了误差
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'o'
出了什么问题?
只是我更换对象标记给定的字符串PHP:不能代替使用的preg_replace()
$matches = preg_replace("/<object(.+?)</object>/","replacing string",$str);
中却是露出了误差
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'o'
出了什么问题?
</object>
中的斜杠必须被引用:<\/object>
,否则它会被解释为您的正则表达式的结尾,因为您正在用斜线对其进行分隔。整行应为:
$matches = preg_replace("/<object(.+?)<\\/object>/","replacing string",$str);
在您的正则表达式正斜杠是正则表达式分隔符。当你正在处理的标签,更好的使用另一个分隔符(而不是用一个反斜杠吧):
$matches = preg_replace("#<object(.+?)</object>#", "replacing string", $str);
还有其他delimiteres了。您可以使用任何非字母数字,非反斜杠,非空白字符。但是,在任何情况下都不应该使用某些分隔符:|
,+
,*
和括号/括号,例如,因为它们经常在正则表达式中使用,只会混淆人并使他们恨你。
顺便说一句,使用HTML的正则表达式是一个Bad Thing!
将第一个字符作为分隔符char将表达式与标志分开。因此,这样的:
"/[a-z]+/i"
...的内部分为这样:
- Pattern: [a-z]+
- Flags: i
所以这个:
"/<object(.+?)</object>/"
...是不是一个有效的正则表达式。试试这个:
"@<object(.+?)</object>@"
@ACBalaji当你可以的时候,不要忘记接受这个答案。 – alex 2010-12-10 13:44:19