我试图检测文本区域内的链接并将其显示在我的视图中。
所以我尝试了这些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包含特殊字符,比如follow:
http://website.info/x-y-z-a/~~~~dcvvvc|cvvcvc~~~/cvcvcv-5-1.html.
那么它根本不起作用。
谢谢
您可以在运行正则表达式之前对URL进行编码,以便将所有特殊字符转换为%的等效字符。
见http://php.net/manual/fr/function.urlencode.php
最后,我发现我忘了添加'|'
$test = preg_replace("/(['w]+:'/'/['w-?&;#~|='.'/'@]+['w'/])/i", "<a target='"_blank'" href='"$1'">$1</A>", $detail);