разобрать изображение из RSS-ленты - PullRequest
0 голосов
/ 19 октября 2018

Это код, который у меня есть сейчас.Я пытаюсь получить изображение этого сайта, но переменная ничего не возвращает, а значит, я не могу получить его, я искал часы

$html = "";

 $url = "https://www.idownloadblog.com/tag/jailbreak/rss";
 $xml = simplexml_load_file($url);
 for($i = 0; $i < 1; $i++){

$title = $xml->channel->item[$i]->title;
$link = $xml->channel->item[$i]->link;
$description = $xml->channel->item[$i]->description;
$pubDate = $xml->channel->item[$i]->pubDate;
$image= $xml->channel->item[$i]->content;


$box1 .= "<a><b>$title</b></a>"; 
$dbox1 .= "$description"; 



}

1 Ответ

0 голосов
/ 23 октября 2018

При просмотре предоставленной вами RSS-ленты не видно изображения сайта.Поэтому, если вам нужен логотип сайта, вам, возможно, придется статически связать его.

Если вы хотите получить изображение поста, мы можем это сделать.Вот что я хотел бы сделать.

Я создал пакет, чтобы сделать разбор xml легким.Вы можете найти его здесь: https://github.com/mtownsend5512/xml-to-array

Затем сделайте следующее:

$xml = \Mtownsend\XmlToArray\XmlToArray::convert(file_get_contents('https://www.idownloadblog.com/tag/jailbreak/feed/'));

Теперь у вас есть хороший массив php для RSS-канала.

Далее мысоздаст вспомогательную функцию, чтобы получить первое изображение из тела сообщения.Мы будем использовать это в качестве избранного изображения поста.

function getPostImage($content)
{
    $output = preg_match_all('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/i', $content, $matches);
    if (empty($matches[1][0])) {
        return 'http://yoursite.com/images/fallback-image.jpg';
    }
    return $matches[1][0];
}

Вы захотите заменить http://yoursite.com/images/fallback-image.jpg на URL вашего резервного изображения, если в посте нет изображения.

Теперь мы перебираем сообщения:

foreach ($xml['channel']['item'] as $post) {
    $title = $post['title']);
    $link = $post['link'];
    $description = $post['description'];
    $pubDate = $post['pubDate'];
    $image = getPostImage($post["content:encoded"]);
}
...