这是我的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&size=x_medium&output-format=jpg&output-quality=70"
class="img-responsive-height" alt="Cozy room - Prague centre Old Town" data-urls="[output-format=jpg&output-quality=70", "https://a1.mu "ut-format=jpg&output-quality=70"]">
</div>
我只想使用Regex表达式来获取src =“https://a2.muscache.com/ic/pictures/19208233/4d8e6c0d_original.jpg。到目前为止我已经尝试了
class = \“listing-img-container media-cover text-center \”&gt; \ n(。*)
但它抓住了整个长链接..
答案 0 :(得分:1)
<div class="listing-img-container media-cover text-center">[\s\S]*?src="([^"]+?\.jpg)
试试这个。抓住捕获。参见演示。
答案 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];