我能解决我的问题:
$ret = preg_replace( "(http://|https://|http://www.|https://www.)([[:alnum:]#?~/&=._-]+)", "<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>", $ret);
我尝试在第一个arg的第一个位置插入一个/但是没有用。
我很难过。谢谢你的帮助。
答案 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
);
它应该像这样工作。基本上,你需要逃避正则表达式中的正斜杠。