【问题标题】:How to ignore different combinations in preg_match如何忽略 preg_match 中的不同组合
【发布时间】:2014-11-20 21:26:49
【问题描述】:

举个例子,让我们看看这个例子:

target="_blank">EXTRACT THIS</a>

我想提取作为超链接的文本。我正在使用以下代码:

preg_match("/target=\"_blank\">(.*)<\/a>/", $content, $result);

问题是可能存在重叠组合,例如:

<a href="LINK" target="_blank">TEXT</a> <a href="LINK_2" target="_blank">TEXT_2</a> 

这条规则也会返回:

TEXT</a> <a href="LINK_2" target="_blank">TEXT_2

我显然不想要。

问题是:如何避免提取这样的重叠?

【问题讨论】:

  • 使用 HTML 解析器。正则表达式不适合解析 HTML。
  • 使用DOM

标签: php preg-match match


【解决方案1】:

问题是你的 RE:

(.*)

说要抓住一切。 .* 被称为贪婪,它会抓住它所能得到的一切。
有两种解决方案。

一个:

(.*?)   

.*的非贪心操作

两个:

([^<]*)

只匹配任何不是

【讨论】:

  • 我自己说得再好不过了。
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
相关资源
最近更新 更多