preg_replace():未知的修饰符' g'在

时间:2015-03-07 21:01:48

标签: php mysql preg-replace

我收到此错误:

  

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"/>

2 个答案:

答案 0 :(得分:0)

你必须在你的正则表达式的外/分隔符内逃避/的所有出现。

所以你可能正在寻找这个:

preg_replace("/\\[img]([^\\[]*)\\[\/img]/",
             "<img src=\"\\1\" border=\"0\">",
             $text); 

否则,正则表达式引擎会将表达式视为在第二个/

处终止

/\\[img]([^\\[]*)\\[/

以下内容将被视为表达式的修饰符。 im确实存在,g不存在。这就是编译正则表达式时抛出错误的原因。

或者,您可以在/旁边使用其他分隔符。但是你必须确保字符 not 在表达式内部没有转义。如果表达式不是文字字符串而是来自变量,那么preg_quote()函数就派上用场了。

答案 1 :(得分:0)

只需使用不同的开始/结束正则表达式字符(例如:`):

$text = preg_replace("`\\[img]([^\\[]*)\\[/img]`","<img src=\"\\1\" border=\"0\">", $text);