警告:preg_replace()[function.preg-replace]:未知的修饰符

时间:2014-04-12 17:36:25

标签: php preg-replace

我能解决我的问题:

$ret = preg_replace( "(http://|https://|http://www.|https://www.)([[:alnum:]#?~/&=._-]+)", "<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>", $ret);

我尝试在第一个arg的第一个位置插入一个/但是没有用。

我很难过。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

只需在你的正则表达式中添加分隔符,选择表达式中不存在的分隔符以避免转义,我建议!

$ret = preg_replace( "!(http://|https://|http://www.|https://www.)([[:alnum:]#?~/&=._-]+)!", "<a href=\"$1$2\" target=\"_blank\">$1$2</a>", $ret);

你也可以简化一下:

$ret = preg_replace( "!(https?://(?:www\.)?[\w#?~/&=.-]+)!", "<a href=\"$1\" target=\"_blank\">$1</a>", $ret);

答案 1 :(得分:0)

$ret = preg_replace(
                '/((?:http:\/\/|https:\/\/)(?:www\.)?)([[:alnum:]#?~\/&=._-]+)/', 
                '<a href="$1$2" target="_blank">$1$2</a>', 
                $ret
);

它应该像这样工作。基本上,你需要逃避正则表达式中的正斜杠。