【问题标题】:PHP preg_match_all get fetch all images to arrayPHP preg_match_all 获取所有图像到数组
【发布时间】:2015-03-23 16:54:53
【问题描述】:

几乎不言自明...

这是我的代码:

$html=<<<EOF

<img src="smiley.gif" alt="Smiley face" height="42" width="42"> 
<img  alt="title" height="120" width="50" src="title.jpg" />
<img  alt=Footer src=footer.bmp height=30 width=47     />
<br>
<img  alt=Footer  height=10 src='square.jpeg' width=10     />
<div id="test"><img      longdesc="" width=100 src="transparent.png" height=43></div>
EOF;

preg_match_all("//",$html,$images);

我希望能够使用 preg_match_all(或任何其他魔法:)将所有图像文件返回到数组中

我希望得到一个包含所有图片的数组,所以var_dump($images); 将是:

smiley.gif
title.jpg
footer.bmp
square.jpeg
transparent.png

【问题讨论】:

  • preg_match_all('//s', $html, $images); var_dump($images[2]);
  • 工作! :) 我怎样才能接受所有选项(双引号或单引号或 src= 之后什么都没有)?例如:
  • preg_match_all('//s', $html, $图像); var_dump($images[3]);
  • 好的,所以我现在得到了小调整 " 或 ' 但我怎么能说 OR NOTHING?? preg_match_all('//s',$html,$images);
  • 完美男人!太感谢了!您应该将其发布为答案:)

标签: php arrays string image preg-match-all


【解决方案1】:

您可以使用Simple HTML DOM ParserPHP DOMDocument,例如:

$doc = new DOMDocument();
$doc->loadHTML($htmlstring);
$elements = $doc->getElementsByTagName('img');

foreach($elements as $element) {
 print $element->getAttribute('src');
}

【讨论】:

  • 问题是:什么是更快? :)
  • 我现在将做一个速度测试来比较两种方法!谢谢!
  • 试试看 :-) $start = microtime(true); //Your Script Content here $end = microtime(true); $time = number_format(($end - $start), 2); echo 'This page loaded in ', $time, ' seconds';
  • 哎呀! preg_match_all 更快! :-)
【解决方案2】:
preg_match_all('/<img(.*?)src=("|\'|)(.*?)("|\'| )(.*?)>/s', $html, $images);
var_dump($images[3]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多