有很多類似的問題,但我嘗試了大約15個不同的preg_match示例,但都沒有完全工作。將www或http開頭的多個文本網址轉換爲絕對鏈接
我有很多用戶提交的內容,其中大部分都有url ..有時以http://www.site.com/page的形式,有時像www.site.com,並且經常包含在括號內(www.site.com/page.html) 。
我沒有找到一種模式來解析一個字符串,並將所有這些轉換爲絕對html鏈接。想知道是否有人可以幫助我。我發現了幾個正則表達式,似乎他們會工作,但我不知道如何正確轉換爲絕對html鏈接,當有一些與http和一些沒有...
這裏有幾個表達式,我曾嘗試:
function makeLinks($text) {
$text = preg_replace('(((f|ht){1}tp://)[[email protected]:%_\+.~#?&//=]+)',
'(<a href="\\1">\\1</a>)', $text);
$text = preg_replace('(www\.[a-zA-Z0-9\-]\.[^ ]+)',
'(<a href="\\1">\\1</a>)', $text);
return $text;
}
function makeLinks($text) {
$text = preg_replace('~(?:www|http://)\S+~', '<a href="$0">$0</a>', $text);
return $text;
}
function makeLinks($text) {
$text = preg_replace('@(?<![.*">])\b(?:(?:https?|ftp|file)://|[a-z]\.)[-A-Z0-9+&#/%=~_|$?!:,.]*[A-Z0-9+&#/%=~_|$]@i', '<a href="\0" target="_blank">\0</a>', $text);
return $text;
}
很抱歉,但也許有些樣品代碼將有助於解釋你正在努力達到的目標。就像你之前的代碼一樣,你說你試過了。 – burntblark 2011-02-28 07:54:06
以www或http開頭的網址是絕對鏈接。我不確定你想要完成什麼。現在,沒有http://的地址可能不會被正確解釋(由古老的/破碎的瀏覽器),但無論這些都是絕對鏈接,添加「http://」的正則表達式將是微不足道的。再一次,我不明白你的問題。你能否詳細說明一下? – rockerest 2011-02-28 08:17:43
或者,也許你想從你的網址中刪除域名+協議 – burntblark 2011-02-28 09:42:05