Получить изображение & lt; src & gt; из RSS-канала

Я хочу получить img src из RSS-канала, но мне нужно только изображение внутри <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

Решение

Может быть, вы могли бы использовать выражение 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>";
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]