正则表达式从HTML获取IMG SRC

时间:2014-11-24 10:38:08

标签: html regex

这是我的HTML:

<div class="panel-image listing-img">
      <a href="/rooms/854260?s=BD20" class="media-photo media-cover">
        <div class="listing-img-container media-cover text-center">
          <img itemprop="image" data-current="0" src="https://a2.muscache.com/ic/pictures/19208233/4d8e6c0d_original.jpg?interpolation=lanczos-none&amp;size=x_medium&amp;output-format=jpg&amp;output-quality=70"
          class="img-responsive-height" alt="Cozy room - Prague centre Old Town" data-urls="[output-format=jpg&amp;output-quality=70&quot;, &quot;https://a1.mu &quotut-format=jpg&amp;output-quality=70&quot;]">
        </div>

我只想使用Regex表达式来获取src =“https://a2.muscache.com/ic/pictures/19208233/4d8e6c0d_original.jpg。到目前为止我已经尝试了

  

class = \“listing-img-container media-cover text-center \”&gt; \ n(。*)

但它抓住了整个长链接..

2 个答案:

答案 0 :(得分:1)

<div class="listing-img-container media-cover text-center">[\s\S]*?src="([^"]+?\.jpg)

试试这个。抓住捕获。参见演示。

http://regex101.com/r/zU7dA5/19

答案 1 :(得分:0)

不要使用正则表达式,使用像DOMDocument这样的DOM解析器和DOMXpath。对于Xpath also have a look here

现在将所有HTML放入DOMDocument并使用Xpath

进行搜索
$dom = new DOMDocument();
@$dom->loadHtml($html);
$xpath = new DOMXpath($dom);

$imageNodes = $xpath->query('//div[@class="listing-img-container media-cover text-center"]/img');
$src = $imageNodes->item(0)->getAttribute('src');

我关闭了$dom->loadHtml()的警告,因为有一些错误的HTML,但这不会影响功能。

如果您不想要整个src,只需要?添加

之前的部分
$explode = explode('?', $src, 2);
$src = $explode[0];