无法识别我的正则表达式的错误

时间:2012-12-16 12:35:43

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

  

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

我正在尝试解析网页并获取完整图片。 E.g

<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中存在路径。我的正则表达式可能有什么问题?

信息:所有图片都遵循一种模式,并且都是数字,后跟.jpg

1 个答案:

答案 0 :(得分:2)

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

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

你的正则表达式的问题是误用了$ - 锚。