我正在尝试检测textarea中的链接并在我的视图中显示它。
所以我尝试了这些preg_replace指令
preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a target=\"_blank\" href=\"$1\">$1</A>",$detail);
preg_replace('@(http)?(s)?(://)?(([a-zA-Z])([-\w]+\.)+([^\s\.]+[^\s]*)+[^,.\s])@', '<a target="ref" href="http$2://$4">$1$2$3$4</a>', $detail);
并且它总体上做得很好,除非我得到包含特殊字符的URL,如下所示:
http://website.info/x-y-z-a/~~~~dcvvvc|cvvcvc~~~/cvcvcv-5-1.html.
然后它根本不起作用。
谢谢
答案 0 :(得分:0)
您可以在运行正则表达式之前对您的网址进行编码,以便将所有特殊字符转换为等效的%。
答案 1 :(得分:0)
最后,我发现我忘记添加'|'
$test = preg_replace("/([\w]+:\/\/[\w-?&;#~|=\.\/\@]+[\w\/])/i", "<a target=\"_blank\" href=\"$1\">$1</A>", $detail);