2014-11-23 3 views
2

Im пытается получить Img URL из <content:encoded> и вставить URL в мой DBполучить SRC изображения из <содержание: закодирован>

Но я не могу показаться, чтобы получить правильную информацию из XML файл-

или невозможно извлечь данные с помощью simpleXML?

Это мой XML

<item> 
    <title>Movietitle</title> 
    <content:encoded><![CDATA[<p> 
    <img class="aligncenter wp-image-22085" src="movie-poster-694x1024.jpg" alt="Predestination 2014" width="475" height="701" /></p> 
    <p><span id="more-22087"></span></p> 
    <p> 
    <a href="http://bit.ly/1za5mIz" target="_blank"> 
    <h4 style="text-align: left;">Release Info:</h4> 
    Genre: Sci-Fi, Thriller<br /> 
    Quality: DVDRip<br /> 
    Language: English</p>]]> 
    </content:encoded> 
</item> 

PHP

$feeds = array('http://xxxx.xml'); 
foreach($feeds as $feed) { 

    $xml = simplexml_load_file($feed); 

    foreach($xml->channel->item as $item) { 

     $video_title = $item->title; 
     $video_img=(string) $item->children($ns['content']); 


     $sql = "INSERT INTO video (video_title, video_img, video_date) VALUES (:video_title, :video_img, NOW())"; 
     $query = $dbh->prepare($sql); 
     $query->execute(array(
      ':video_title' => $video_title, 
      ':video_img' => $video_img 
     ));  
    } 
} 
+0

У вас есть онлайн-адрес, который мы можем проверить? – Ghost

+0

@Ghost :) http://axxomovies.org/feed – Dymond

ответ

3

Да, это возможно, только следить за этой ->children(), а затем обрабатывают содержимое как HTML. Вы можете использовать DOMDocument в этом случае, а затем просто используйте ->getAttribute('src'), чтобы получить источник тега изображения.

Пример:

$xml = simplexml_load_file('http://axxomovies.org/feed', null, LIBXML_NOCDATA); 
foreach ($xml->channel->item as $item) { 
    $title = (string) $item->title; 
    $content = $item->children('content', 'http://purl.org/rss/1.0/modules/content/'); 
    $html_string = $content->encoded; 
    $dom = new DOMDocument(); 
    libxml_use_internal_errors(true); 
    $dom->loadHTML($html_string); 
    libxml_clear_errors(); 
    $img = $dom->getElementsByTagName('img')->item(1)->getAttribute('src'); 
    echo 'Title: ' . $title . '<br/>'; 
    echo 'Image source: ' . $img; 
    echo '<hr/>'; 
} 

Sidenote: Вам не нужно подготовить каждую итерацию. Вы можете взять это внутри и поставить выше цикла. Вам нужно только подготовить его один раз.

+0

Это работает действительно очень гладко. Благодарим также за побочный эффект. – Dymond

+1

@Dymond уверен, что человек мне это понравился – Ghost

Смежные вопросы