我是正则表达式的新手,我正在尝试将所有网址与正则表达式匹配。我正在使用preg_match
和preg_replace
我的PHP代码:
$text = "www.youtube.com<br />
youtube.com<br />
http://youtube.com<br />
http://www.youtube.com<br />"
$regex = "/(?:http:\/\/|https:\/\/|)[\w]{0,3}[\w]+\.[\w]+[\.]?[\w]{0,4}[\S]{0,}/";
if (preg_match($regex, $text, $url)) {
//url match
$text = preg_replace($regex, "<a href='{$url[0]}''>{$url[0]}</a>", $text);
}
echo $text;
当我输出它时,它会显示如下:
www.youtube.com /< www.youtube.com /&lt; www.youtube.com /&lt; www.youtube.com /&lt;
(它们都像第一个链接一样,但我没有足够的声誉来发布超过2个链接。所以用你的想象力想象它们看起来就像第一个。我包含一个截图的链接下面也是)
为什么会这样?
我想让它显示如下:
www.youtube.com
youtube.com
http://youtube.com
http://www.youtube.com