Symfony:检测文本区域内的链接


Symfony : detect link inside 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包含特殊字符,比如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);