当前位置: 首页 > 知识库问答 >
问题:

如何搜索不在[img]bb标签内的图像网址,然后使用正则表达式包含这些标签

林项明
2023-03-14

有许多类似的主题,这一个非常接近@Denomales如何搜索不在任何html标记中的URL,然后将它们转换为超链接?

但我面对的是略有不同的塞纳里奥

在文本字段中,我将图像包含在[IMG][/IMG]标记中,例如

[img]http://i58.tinypic.com/i3yxar.jpg[/img]

还有一些普通的图像URL,即没有[IMG]标记,例如

http://www.jonco48.com/blog/tongue1.jpg

我想找到所有普通图像url,并在其中包含[IMG]标记(使用preg_replace或类似功能),以便上述url成为

[img]http://www.jonco48.com/blog/tongue1.jpg[img]

现在真正的挑战是语句应该跳过那些已经包含在[img]bb标签中的图像URL,那么我该怎么做呢?

共有2个答案

庞鸿骞
2023-03-14

这可能有助于您使用替代。

((\[img\])?(http:.*?\.(jpg|png|gif))(\[\/img\])?)

演示

注意:如果需要,也可以更改内部部分来验证URL。

示例代码:

$re = "/((\\[img\\])?(http:.*?\\.(jpg|png|gif))(\\[\\/img\\])?)/i";
$str = "[img]http://i58.tinypic.com/i3yxar.jpg[/img] http://i58.tinypic.com/i3yxar.jpg";
$subst = '[img]$3[/img]';

$result = preg_replace($re, $subst, $str);
曹钊
2023-03-14

正则表达式:

(?<!\[img\])(https?:\/\/(?:www\.)?[\w.]+\.[a-z]{2,6}(?:\/\w+)*(?:\.\w+)?)(?!\[\/img\])

替换:

[img]\1[/img]

演示

 类似资料:
  • 本文向大家介绍正则表达式处理图片地址、img标签的方法,包括了正则表达式处理图片地址、img标签的方法的使用技巧和注意事项,需要的朋友参考一下 再上传表情或者图片地址时候很多时候不能直接上传<img src=" " />,因此在上传评论或者图片之前应该先处理一下img标签。举例如下,希望可以帮助更多的程序猿~ 处理获取到的字符串 运算结果为: 这样上传到服务器的代码就不会存在html标签,这是一种

  • 问题内容: 我有这个HTML输入: 我想使用正则表达式删除HTML标记,以便输出为: 谁能建议使用正则表达式执行此操作? 问题答案: 您可以使用称为Jericho Html解析器的HTML解析器。 您可以从这里下载-http://jericho.htmlparser.net/docs/index.html Jericho HTML Parser是一个Java库,允许对HTML文档的各个部分(包括服

  • 问题内容: 我正在使用正则表达式在字符串数组中向前搜索,如下所示: 请注意,在上述实现中,我保存了和以便进行连续搜索。 无论如何,现在我想从该[line,offset] 向后搜索 。 我的问题:有没有办法使用正则表达式有效地向后搜索?如果没有,那有什么替代方法? 澄清: 通过 向后 我的意思是找到以前的比赛。 例如,假设我在搜索“ dana” 并获得第二名。如果我再做一次,我将 向前 搜索并获得第

  • 问题内容: 我真的很希望能够允许Beautiful Soup匹配任何标签列表,就像这样。我知道attr接受正则表达式,但是美丽的汤中有什么可以让您这样做的? 输出: 我的目标是创建一个可以从站点抓取表格的刮板。有时标签的名称不一致,我希望能够输入标签列表来命名表的“数据”部分。 问题答案: 是Beautiful Soup搜索API中最受欢迎的方法。 您可以传递各种过滤器。另外,传递列表以查找多个标

  • 我发现正则表达式不包含101,如下所示: 0*1*0*(1 00 000)*(010)* 我无法理解作者是如何想出这个正则表达式的。所以我只想到了不包含101的字符串: 01000100 我似乎上面的字符串不会与上面的正则表达式匹配。但我不确定。所以尝试在regex101.com上翻译成等效的pcre正则表达式,但也失败了(因为可以看到我的正则表达式甚至不匹配包含单个1的字符串。 我的翻译有什么问

  • 我需要一些“包含”和“不包含”的正则表达式。通常我会写: 包含:(.*WORD_A.*)$,不包含:(^((?!WORD_A.*)*)$ 如果单独使用,这很好,但我想写一些可以检测到的东西,比如“包含单词A和单词B”(顺序不相关!)和“包含单词A,但不包含单词B)。 基本上,我希望用户可以做出这样的声明“以单词a开头,包含单词B,但不是C和/或以D结尾”,程序返回真/假。最好的办法是只附加正则表达