我想从RSS提要获取img src,但我只需要<div class="img"
内的图片而不是任何其他class="favicon"
img src。但是当我得到图像时,它不是原始图像,而是它返回了图标。我该如何解决?这是供稿链接“http://rss.disp.cc/PttHot.xml”。这是我的代码:
<?php
$ptt = simplexml_load_file('http://rss.disp.cc/PttHot.xml');
foreach ($ptt->entry as $entry ) {
$content = $entry -> content;
preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i', $content, $images);
if(!empty($images)){$img = $images[1];}else{$img="";}?>
我正在尝试从内容中获取图片,这里有多个img src
内容,但我只需要<div class="image">
和img style="max-width:100%;"
内的原始图片而不是其他额外的图标。请帮助 - 我尝试了多种解决方案,但我无法修复。
答案 0 :(得分:0)
也许您可以使用xpath表达式而不是使用DOMDocument的正则表达式。
$entry->content
包含html,因此您可以使用loadHTML加载。
然后你可以使用xpath表达式来获取img
标签:
//div[contains(@class, 'img')]/img[contains(@style, 'max-width:100%') and not(contains(@class,'favicon'))]
例如:
$ptt = simplexml_load_file('http://rss.disp.cc/PttHot.xml');
$doc = new DOMDocument();
foreach ($ptt->entry as $entry) {
$internalErrors = libxml_use_internal_errors(true);
$doc->loadHTML((string)$entry->content);
libxml_use_internal_errors($internalErrors);
$xpath = new DOMXpath($doc);
$items = $xpath->query("//div[contains(@class, 'img')]/img[contains(@style, 'max-width:100%') and not(contains(@class,'favicon'))]");
foreach ($items as $item) {
$img = $item->getAttribute('src');
echo $img . "<br>";
}
}