这将为你完成这项工作。请参阅下面的说明,了解它是如何工作的。
$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