2013-04-23 28 views
0

我使用这个代码在文本中发现的网址,并链接:如何在文本中查找网址并创建链接?

$reg_exUrl = "/((((http|https|ftp|ftps)\:\/\/)|www\.)[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?)/"; 
$text = preg_replace($reg_exUrl, "<a href=\"$1\" target='_blank'>$1</a>", $text); 

,但它不会让链接,如果网站没有HTTP,HTTPS,FTP,FTPS或www,例如, google.com不会成为链接。 另外,如果网站只有www,例如www.google.com,链接是mywebsite.com/www.google.com。 你能帮我解决这些问题吗?如果在文本中有somewebsite.com和www.somewebsite.com,它会成为正常的链接吗?

回答

0

Assumming你原来的正则表达式是正确的,所有你需要做的是:

$reg_exUrl = "/((((http|https|ftp|ftps)\:\/\/)|www\.)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?)/"; 
                ^-- Optional! 

还有,你将要在这里解决的一个重大问题。假设文本中包含“google.com”,则您的正则表达式会吐出<a href="google.com">google.com</a>,这会给您一个404(因为这会导致您进入yourDomain.com/google.com)!您将需要预先http://(或其他协议)。看看捕捉。所有你需要做的是找到这是否存在,否则预先安装一个默认的。

相关问题