我收到此错误:
preg_replace():
中的未知修饰符'g'
关于此代码:
$text = preg_replace("/\\[img]([^\\[]*)\\[/img]/","<img src=\"\\1\" border=\"0\">",$text);
帮助任何人?
修改 我的目标是当我使用
时[img]http://google.com/img.png[/img]
在注释字段中输出应该类似于
<img src="http://google.com/img.png"/>
答案 0 :(得分:0)
你必须在你的正则表达式的外/
分隔符内逃避/
的所有出现。
所以你可能正在寻找这个:
preg_replace("/\\[img]([^\\[]*)\\[\/img]/",
"<img src=\"\\1\" border=\"0\">",
$text);
否则,正则表达式引擎会将表达式视为在第二个/
:
/\\[img]([^\\[]*)\\[/
以下内容将被视为表达式的修饰符。 i
和m
确实存在,g
不存在。这就是编译正则表达式时抛出错误的原因。
或者,您可以在/
旁边使用其他分隔符。但是你必须确保字符 not 在表达式内部没有转义。如果表达式不是文字字符串而是来自变量,那么preg_quote()
函数就派上用场了。
答案 1 :(得分:0)
只需使用不同的开始/结束正则表达式字符(例如:`):
$text = preg_replace("`\\[img]([^\\[]*)\\[/img]`","<img src=\"\\1\" border=\"0\">", $text);