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

为什么这个PHP正则表达式会给我错误?,php,regex,Php,Regex,需要有关正则表达式的帮助: 我想换一个 [url=http://youtube.com]YouTube.com[/url] 与 正则表达式 preg_replace("/[url=(.*?)](.*?)[/url]/is", '<a href="$1">$2</a>', $text); preg_replace(“/[url=(.*?)”(.*?[/url]/is“,”$text); 为什么这给了我: 警告:preg_replace()[function.pre

需要有关正则表达式的帮助:

我想换一个

[url=http://youtube.com]YouTube.com[/url]


正则表达式

preg_replace("/[url=(.*?)](.*?)[/url]/is", '<a href="$1">$2</a>', $text);
preg_replace(“/[url=(.*?)”(.*?[/url]/is“,”$text);
为什么这给了我:


警告:preg_replace()[function.preg replace]:第18行C:\Programa\wamp\www\func.php中的未知修饰符“r”php将
/url
中的“
/”解释为正则表达式的结尾和正则表达式选项的开头。在其前面插入“
\
”,使其成为文本“
/

您需要以相同的方式转义“
[
”(否则它们将被解释为引入字符类)

preg\u replace(“/\[url=(.*?)(.*?\[\/url]/is”,”,“,$text);

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

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

您仍然需要转义
[
字符。

斜杠和方括号都是正则表达式中的特殊字符,您需要转义它们:

\/ \[ \]

正则表达式字符串中的第二个“/”结束正则表达式。您需要对其进行转义。此外,preg_replace将“[url=(.*)””解释为一个字符类,因此您也需要对其进行转义

preg_replace('/\[url=(.*?)\](.*?)\[\/url\]/is', '<a href="$1">$2</a>', $text);
preg\u replace('/\[url=(.*?\](.*?\[\/url\]/is','',$text);

您似乎刚刚开始使用正则表达式。如果是这样的话,或者即使不是这样,您也会发现这是一个非常有用的工具。它为我们提供了一个沙盒,用于测试模式匹配和替换字符串。如果您一直使用正则表达式,它将突出显示转义特殊字符的需要。

类似:[url=(.*)](.*)[\/url]
preg_replace('#\[url=(.*?)](.*?)\[/url]#is', '<a href="$1">$2</a>', $text);
\/ \[ \]
preg_replace('/\[url=(.*?)\](.*?)\[\/url\]/is', '<a href="$1">$2</a>', $text);