【问题标题】:PHP Regex to match words outside oh [URL] and [IMG] BBCode?PHP 正则表达式匹配 oh [URL] 和 [IMG] BBCode 之外的单词?
【发布时间】:2012-09-10 14:44:40
【问题描述】:

希望有人可以帮助我。我正在为我的论坛制作一个 PHP 插件。目标是每当有人在帖子中输入“亚马逊”这个词时,它就会自动将其变成亚马逊的链接。

我需要编辑保存在数据库中的文本,然后再将其转换为 HTML 并且仍为 BBCode 格式。

示例文本:

我真的很喜欢在亚马逊购物。这是一个链接:[URL="http:www.amazon.com"]链接到亚马逊[URL],这是一个图片:[img]http://images.amazon.com/amazon/image/zzz.jpg [/img]。这是另一个简单的链接:[url]http://www.amazon.net[/url]。请记住,亚马逊很棒!

--

在上面的例子中,只有“Amazon”的第一个和最后一个实例应该被匹配,所有其他的都需要被忽略。

我试图改变一个正则表达式,它除了在 HTML 标记中做类似的事情,但没有运气。

任何帮助将不胜感激。

【问题讨论】:

  • 你能告诉我们你的尝试吗?
  • 当然——我从以下内容开始,我用它在 HTML 中进行相同的编辑——
  • 当然-我从以下内容开始,我用它在 HTML 中进行相同的编辑-Amazon(?![^<]*(</a>|" />|width="\d+"|target="_blank"|follow">|rel="thickbox">|onclick="[\w .()]+")) 我意识到这有点复杂,但实际上效果很好,因为使用的 HTML 始终是一致的.所以我把它分解成让它远离 HTML 标签的部分 Amazon(?![^<]*(</a>|" />)) 我试着改变它 Amazon(?![^\[]*(\[/url]|"]))
  • 这实际上相当不错,然后我添加了一些东西来阻止如果在 [img] Amazon(?![^\[]*(\[/url]|"]|\[/img])) 工作,这似乎有效......所以现在我不知道为什么它不起作用昨天对我来说。也许我回答了我自己的问题! :)
  • 如果你自己找到了,那就完美了!坚持有时会奏效! :) 不要忘记自己添加答案并将问题标记为已回答,以便其他人可以参考它,这可能是一个方便的 sn-p!

标签: php regex forum bbcode


【解决方案1】:

解决了,这似乎可行-

Amazon(?![^\[]*(\[/url]|"]|\[/img]))

这将跳过任何 URL 标签(长或短)和所有 IMG 标签中的亚马逊。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2012-04-26
    • 2019-04-25
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多