【问题标题】:Unable to identify whats wrong with my Regex [duplicate]无法确定我的正则表达式有什么问题[重复]
【发布时间】:2012-12-03 19:00:32
【问题描述】:

可能重复:
How to extract img src, title and alt from html using php?

我正在尝试解析网页并获取完整图像。例如

<html>

<body>
<a href='1.jpg'><img src='tn1.jpg /></a>
<a href='2.jpg'><img src='tn2.jpg /></a>
<a href='3.jpg'><img src='tn3.jpg /></a>
<a href='4.jpg'><img src='tn4.jpg /></a>
</body>
</html>

所以我试图捕捉它们以获得完整的缩略图:

1.jpg
2.jpg
3.jpg
4.jpg

我的 PHP 正则表达式代码是:

$text = file_get_contents($website); //Get webpage

preg_match_all("~$[0-9](.*?)\.jpg~i", $text, $matches);

但是当我运行它时,$matches 数组是空的,但路径在 webiste 中。我的正则表达式可能有什么问题?

INFO:所有图像都遵循一个模式,并且都是数字后跟 .jpg

【问题讨论】:

标签: php html regex parsing preg-match-all


【解决方案1】:

我不建议使用正则表达式来解析 html,但如果您不想正确执行此操作,这里有一个正则表达式可以解决问题:/(?&lt;=['"])\d+\.jpg/i

在这里演示:http://regex101.com/r/xC8nP2

您的正则表达式的问题是滥用$-anchor。

【讨论】:

  • 对不起..也许我忘了写还有其他的.jpg。您的正则表达式还将匹配另一个看起来像这样的 &lt;img class="last bottom" src="55-tmp/templates/thumbs/thumbs_62.jpg &gt; 它将匹配为 62.jpg - 这不是我的目标。我需要正则表达式来匹配那些正好是&lt;a href='[number].jpg' 例如&lt;a href="1.jpg"
  • 我假设你解决了你的问题?没问题!
猜你喜欢
  • 2020-08-07
  • 1970-01-01
  • 2012-02-24
  • 2013-09-13
  • 2020-03-24
相关资源
最近更新 更多