2013-04-23 24 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://(或其他協議)。看看捕捉。所有你需要做的是找到這是否存在,否則預先安裝一個默認的。

相關問題