【发布时间】:2013-11-04 11:10:53
【问题描述】:
社区!
我是正则表达式的新手,但遇到了麻烦。
我有一个简单的用户数据解析器的聊天脚本。
可以嵌入带有 BBCode 标签的图像,如下所示:[img]http://example.com/image.png[/img]。
我还想对有效的超链接进行自动链接转换。
我有两个处理正则表达式,不知道如何解决它们之间的冲突。
为了处理[img]标签,我使用它,它首先执行:
$line = preg_replace('/\[img\](https?:\/\/[a-zA-Z0-9%\-_?&=:+.\/]+)\[\/img\]/iU', '<a href="$1" target="_blank"><img class="incl_img" src="$1"></a>', $line, 5);
然后我用这个来处理链接:
$line = preg_replace('#(https?:\/\/([a-zA-Z0-9-.]+)\/?[a-zA-Z0-9?&=.:\#\/\-_~%+]*)#e', '\'[<a href="$1" title="$1" target="_blank">$2</a>]\'',$line);
当用户发布图像时,链接处理正则表达式会通过插入其<a href=... 而不是链接来破坏<img> 标签。如何在不使用特殊 [url] 标签或其他东西的情况下避免它?如何将[img]标签与简单链接分开?欢迎对正则表达式和/或算法进行任何更正。提前致谢!
【问题讨论】: