PHP - Получить URL-адрес изображения из RSS-канала - PullRequest
0 голосов
/ 14 октября 2011

Мне нужно получить URL (а не ссылку) изображения, которое я получаю из RSS-канала в PHP.Я знаю, что если я хочу получить ссылку (не URL) одного из заголовков канала, я должен использовать $feed->channel->item->link;, но что, если я хочу получить URL-адрес изображения (не ссылку) элемента канала и вставить его впеременная для последующего использования?возможно $feed->channel->image->url; - я использовал это, но ничего не работает.

Это то, что я использовал для получения канала.

function get_google_image($image){
{        $intento=0;
         $imagealt=get_the_title(); //its wordpress
         $image=get_the_title();
                 $words = explode(" ", $image);
                 $imagetitle = implode(" ", array_splice($words, 0, 2));
                 $image = implode(" ", array_splice($words, 0, 2));
         $image=str_replace(" ","+",$image);
         while (!$feed=simplexml_load_file("http://obsrv.com/General/ImageFeed.aspx?'$image'")){
                 $attempt+=1;
                 if ($attempt>5) break;
                 print "Retry".$attempt."<br>";
                 }
                 $imagelink=$feed->channel->image->url; //Here is the problem, this variable finally gets empty and i want it to be the url of the image so i can post it with html later in the line below
                 echo '<img title="' . $imagetitle . '" alt="' . $imagealt . '" src="' . $imagelink . '"/>';
}}

Фид http://obsrv.com/General/ImageFeed.aspx? (здесь переменнаяс ключевым словом для поиска изображений) Я хочу получить первый элемент из списка каналов RSS (первое изображение, потому что у каждого сообщения RSS есть только одно изображение, а также это изображение в виде файла, прикрепленного к сообщению, если это помогаетты мне в помощь).Поэтому я хочу получить это изображение и вывести URL-адрес в переменную, чтобы я мог создать HTML-код для публикации изображения.

echo '<img title="' . $imagetitle . '" alt="' . $imagealt . '" src="' . $imagelink . '"/>';

1 Ответ

1 голос
/ 14 октября 2011

У вас несколько проблем в вашем коде:

  1. Из на странице справки , я вижу, что вы указали неправильную структуру URL:

    "http://obsrv.com/General/ImageFeed.aspx?'$image'"
    

    Это должно быть:

    "http://obsrv.com/General/ImageFeed.aspx?q=" . $image . ""
    
  2. Я думаю, в вашем коде есть ошибка:

    Во-первых,Вы устанавливаете $image в качестве параметра функции на get_google_image($image) И затем вы устанавливаете $image, взятые из функции WordPress.Я не знаю, если это ваш метод.

  3. Этот код также глючит:

    $image=str_replace(" ","+",$image);
    

    Я думаю, что это то, чтоВы ищете:

    $image = urlencode($image);
    
  4. Другая проблема заключается в том, что вы указали simplexml_load_file() с URL.

    ОБНОВЛЕНИЕ Фил указал, что simplexml_load_file() работает с URL, если включен fopen HTTP wrapper.Но, если он отключен, вы можете использовать этот код в качестве обходного пути:

    $raw_html = file_get_contents( "http://obsrv.com/General/ImageFeed.aspx?q=$image" );
    $feed=simplexml_load_string( $raw_html );
    
...