为什么这个PHP正则表达式给我错误?

0 php regex

需要一些正则表达式的帮助:

我想替换

[url=http://youtube.com]YouTube.com[/url]
Run Code Online (Sandbox Code Playgroud)

<a href="http://youtube.com">YouTube.com</a>
Run Code Online (Sandbox Code Playgroud)

正则表达式

preg_replace("/[url=(.*?)](.*?)[/url]/is", '<a href="$1">$2</a>', $text);
Run Code Online (Sandbox Code Playgroud)

为什么这会给我:

警告:preg_replace()[function.preg-replace]:第18行的C:\ Programa\wamp\www\func.php中的未知修饰符'r'

Bli*_*ixt 6

您应该在正则表达式中转义特殊字符:

preg_replace('/\[url=(.*?)](.*?)\[\/url]/is', '<a href="$1">$2</a>', $text);
Run Code Online (Sandbox Code Playgroud)

我已经转义了[字符(它们指定了字符类的开头)和/字符(它指定了正则表达式的边界.)

或者(对于/角色),您可以使用另一个边界角色:

preg_replace('#\[url=(.*?)](.*?)\[/url]#is', '<a href="$1">$2</a>', $text);
Run Code Online (Sandbox Code Playgroud)

但是你仍然需要逃避[角色.