正则表达式从html代码解析图像URL

时间:2014-11-26 14:15:11

标签: regex html-parsing preg-match

大家好,我写了一个模块,创建了一些文章,并正确地css它们,我想解析文章内容中的图像。我想到的第一个想法是正则表达式。我没有任何想法,直到3个小时我才开始阅读关于正则表达式的教程,我做了一个模式,对我来说似乎还不错。

$pattern='^src\="images\/([a-zA-Z]+|[0-9]+)+([a-zA-Z]*|[0-9]*)*\.[jpg|png|bmp|gif]"$';
$regstring=$introtext;
preg_match($pattern,$regstring,$matches);
var_dump($matches);

INPUT:

<p>ASDADSDSASADSADSASDADSDSASADSADSASDADSDSASA</p>
<p><img src="images/authentic.jpg" alt="authentic" /></p>
<p>SASDADSDSASADSADSASDADSDSASADSADS</p>

我有点在stackoverflow中找到了很多与我的完全不同的准备模式,我不想只复制一些我不知道他们做什么的行。我也发现了十分钟之前我可以用DOM做到这一点HTML,但我固执地使它与regexpr一起工作,所以我可以学到更多关于它的东西。 有人能帮我找到我的错误吗? 谢谢你的时间。

3 个答案:

答案 0 :(得分:0)

$pattern='/(?<=[\'\"])[\w\/-]+[.]{1}[a-zA-Z]{3,4}(?=[\'\"])/i';
$regstring=$introtext;
preg_match_all($pattern,$regstring,$matches);
var_dump($matches[0]);

您可以在此处查看其工作原理:http://regex101.com/r/eV6gE4/1

答案 1 :(得分:0)

src="images\/[a-zA-Z0-9]+\.(?:jpg|png|bmp|gif)"

你可以尝试这个。你的正则表达式的简单版本。参见演示。

http://regex101.com/r/oE6jJ1/36

答案 2 :(得分:0)

使用正确的解决方案,并且,当您安装perl module WWW::Mechanize,命令mech-dump变为可用时,请停止杀死小猫(每当您尝试使用正则表达式解析HTML时,您杀死了一只小猫):

$ mech-dump --images http://stackoverflow.com/questions/27151348
http://i.stack.imgur.com/qF63b.jpg?s=32&g=1
//cdn.sstatic.net/stackoverflow/img/apple-touch-icon.png
http://i.stack.imgur.com/nyAHT.jpg?s=32&g=1
/posts/27151348/ivc/677a
http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif