2013-09-24 98 views
2

我正在通过一个奇怪的问题回车在Web表单中导致我的正则表达式语句混淆。我是新来的正则表达式,所以请原谅任何一个愚蠢的问题。正则表达式和回车返回

当我的形式从一个文本区域发送数据输入时,下列功能被用来将任何合格的字符串转换成一个超链接:

function make_links_clickable($message) 
    { 
    return preg_replace('!(((f|ht)tp(s)?://)[-a-zA-Zа-яА-Я()[email protected]:%_+.~#?&;//=]+)!i', '<a href="$1" target="_blank">$1</a>', $message); 
    } 
function make_links_clickable2($message) 
    { 
    return preg_replace('!(www\.)?[a-z0-9\-]+\.([a-z]{2,3}(\.?[a-z]{2,3})?)!i', '<a href="http://$0" target="_blank">$0</a>', $message); 
    } 
$message = make_links_clickable2($message); 

这个问题似乎是在第二功能。当我使用这些功能,输出结果如下:

www.google.com 
http://www.google.com 
nwww.google.com 
http://www.google.com 

第三输出的开头有一个“N”(和它的超链接也被搞砸),这似乎是从回车。不知道这是如何发生的。

+0

您正在使用的窗体是否有PUT或GET? – Leptonator

+0

@Leptonator你是指PUT还是POST(有区别)?无论如何,你认为这可能很重要? – Christoph

+0

是的 - 我不认为问题是如何回车 - 但如果按输入提交表格.. – Leptonator

回答

0

我不能进去,但有可能,你必须转义反斜线两次想:

'!(www\\.)?[a-z0-9\-] etc. 

这可能是问题。

问候