這將爲你完成這項工作。請參閱下面的說明,瞭解它是如何工作的。
$string = 'some text www.example.com more text http://example.com more text https://www.example.com more text';
$string = preg_replace('#\b(?:http(s?)://)?((?:[a-z\d-]+\.)+[a-z]+)\b#', "<a href='http$1://$2'>http$1://$2</a>", $string);
echo $string; // some text <a href='http://www.example.com'>http://www.example.com</a> more text <a href='http://example.com'>http://example.com</a> more text <a href='https://www.example.com'>https://www.example.com</a> more text
\b
匹配單詞邊界 (?:http(s?)://)?
可選匹配的字符串,如果它包含'http://'
或'https://'
,如果HTTPS搶's'
所以我們可以建立正確的URL
(?:[a-z\d-]+\.)+
比賽中的一個或一系列字母更發生/數字後跟一段時間
[a-z]+
匹配一個或多個字母,頂級域名,註釋頂級域名現在已經開放供購買,所以不能再限制長度了。請參閱http://tinyurl.com/cle6jqb
然後我們通過將它們括在圓括號中,在反向引用中捕獲除了's'
之外的最後兩個部分。
然後,我們建立的網址:
<a href='http$1://$2'>http$1://$2</a>
http$1://
創建HTTP如果HTTPS反向引用$1
將包含一個's'
$2
將包含域名。我們建立URL鏈接的鏈接文本。
你有看到這個http://php.net/manual/en/regexp.reference.back-references.php或http://www.regular-expressions.info/brackets.html嗎? – elclanrs 2013-02-24 00:22:13
這些不是反向引用。在這種情況下,他們是比賽組佔位符。 – mario 2013-02-24 00:24:24