网址自动加链接和ubb代码冲突的问题,怎么解决?

php中文网
发布: 2016-06-23 14:19:16
原创
1181人浏览过

preg_replace("#((mms|http|https|ftp|telnet)(://)[.:@/w?=-&_#;%,!+]+)#i","\1",$text);

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


回复讨论(解决方案)

比如这个:【ubb】http://bbs.csdn.net/topics/new?forum_id=PHPBase【/ubb】

或者说我又要对ubb代码转换,又要对没有被ubb代码包起来的网址自动加上链接,怎么做到?

试试
preg_replace("#(?\1",$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会自动转换为链接。
比如这个:http://bbs.csdn.net/topics/new?forum_id=PHPBase
比如这个:【ubb】http://bbs.csdn.net/topics/new?forum_id=PHPBase【/ubb】

试试
preg_replace("#(?\1",$text);

好象可以,但是不是[ubb]标签,上面1楼写错,应该是[img]和[url]这些标签,可以把[ubb]换成[url],但只能排除一个标签,怎么写可以排除多个?如还要排除[img]

$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会自动转换为链接。
比如这个:http://bbs.csdn.net/topics/new?forum_id=PHPBase
比如这个:【ubb】http://bbs.csdn.net/topics/new?forum_id=PHPBase【/ubb】

====
这个【】号其实是[]这个号,因为个写成[]时在这里会自动转成链接看不到,所以写成【】

你自己换一下不就行了?

$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);
登录后复制

你自己换一下不就行了?

$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);
登录后复制


===
太谢谢了,我用你前面那个也可以
return preg_replace("#([^]])((mms|http|https|ftp|telnet)(://)[.:@/w?=-&_#;%,!+]+)(?>=[)?#isu","$1$2",$str);

后面那个也可以,谢谢。。。。

还有一个问题,就是前面有=号的怎么处理?就是这种格式:
[url=http://bbs.csdn.net/topics/new?forum_id=PHPBase]

谢谢,我改成这样可以:
echo preg_replace("#([^]|=])((mms|http|https|ftp|telnet)(://)[.:@/w?=-&_#;%,!+]+)#isu","$1$2",$text);

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号