php匹配替换文本中的网址加上a-href链接标签

最近有一个项目,需要把用户提交的文本中有网址的内容加上 链接标签,差不多花了一天时间把这个正则写好,效果还不错。给大家分享一个

<?php
$regex='/((http:\/\/|www\.|https:\/\/)(\w+|\.|\?|\=|\/|\&|\:|\d+)+)/';
$str='今天准备来测试一个网址功能的问题,首先使用正常的网址格式是http://aaa.bbs.yiyou.org,有时候我们也可能使用这种方式www.yiyou.org>,如果你会带一个url的网址可能是这样的www.yiyou.org/index.php?aa=aaa&aaa&bb=bbb,但有时候可能是一个伪静态的页面,可能是这样的 http://www.yiyou.org/yiyou/,但很多时候都把http这个内容忘记了,结果是这样的www.yiyou.org/yiyou,至此,网址可以测试了一部分了。再测试一下https://www.yiyou.org/?aa=test,如果加入端口怎么办呢?http://www.yiyou.org:5000/?aaa=bb';
#echo preg_replace($regex,$rep,$str);
echo preg_replace_callback($regex,function($matches){
 #print_r($matches);exit;
 if(!empty($matches[0]) && (strstr($matches[0],'http://')||strstr($matches[0],'https://'))){
        return '<a href="'.$matches[0].'">'.$matches[0].'</a>';
}else{
        return '<a href="http://'.$matches[0].'">'.$matches[0].'</a>';
}

},$str);
echo "<br>";
echo '--------------------<br>';
echo $str;