日期:2014-05-17  浏览次数:20432 次

网址自动加链接和ubb代码冲突的问题,怎么解决?
preg_replace("#((mms|http|https|ftp|telnet)(://)[.:@/\w\?\=\-\&\_\#\;\%\,\!\+]+)#i","<a   href=\\1 target=_blank>\\1</a>",$text);

上面是给一段文字里面的网址自动加链接的,但是有的ubb代码的链接不能自动加链接,要怎么排除?因为ubb会自动转换为链接。
比如这个:http://bbs.csdn.net/topics/new?forum_id=PHPBase
怎么排除有[url]或者[img]这种标签里面的链接不要自动加链接?或者有没有其它正则可以做到?
谢谢!

------解决方案--------------------
试试
preg_replace("#(?<!\[ubb\])((mms
------解决方案--------------------
http
------解决方案--------------------
https
------解决方案--------------------
ftp
------解决方案--------------------
telnet)(://)[.:@/\w\?\=\-\&\_\#\;\%\,\!\+]+)(?!\[\/ubb\])#i","<a   href=\\1 target=_blank>\\1</a>",$text);
------解决方案--------------------
$text =<<< TXT
上面是给一段文字里面的网址自动加链接的,但是有的ubb代码的链接不能自动加链接,要怎么排除?因为ubb会自动转换为链接。
比如这个:http://bbs.csdn.net/topics/new?forum_id=PHPBase
比如这个:【ubb】http://bbs.csdn.net/topics/new?forum_id=PHPBase【/ubb】
TXT;
echo preg_replace("#([^】])((mms
------解决方案--------------------
http
------解决方案--------------------
https
------解决方案--------------------
ftp
------解决方案--------------------
telnet)(://)[.:@/\w\?\=\-\&\_\#\;\%\,\!\+]+)(?>=【)?#isu","$1<a   href=$2 target=_blank>$2</a>",$text);
上面是给一段文字里面的网址自动加链接的,但是有的ubb代码的链接不能自动加链接,要怎么排除?因为ubb会自动转换为链接。
比如这个:<a   href=http://bbs.csdn.net/topics/new?forum_id=PHPBase target=_blank>http://bbs.csdn.net/topics/new?forum_id=PHPBase</a>
比如这个:【ubb】http://bbs.csdn.net/topics/new?forum_id=PHPBase【/ubb】