Symfony:检测textarea内的链接

时间:2014-06-23 07:05:36

标签: php regex

我正在尝试检测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.

然后它根本不起作用。

谢谢

2 个答案:

答案 0 :(得分:0)

您可以在运行正则表达式之前对您的网址进行编码,以便将所有特殊字符转换为等效的%。

请参阅http://php.net/manual/fr/function.urlencode.php

答案 1 :(得分:0)

最后,我发现我忘记添加'|'

$test = preg_replace("/([\w]+:\/\/[\w-?&;#~|=\.\/\@]+[\w\/])/i", "<a target=\"_blank\" href=\"$1\">$1</A>", $detail);