Я пытаюсь получить URL-адрес img из <content:encoded>
и вставляя URL-адрес в мою БД
Но я не могу получить правильную информацию из файла 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 )); } }
Да, возможно, просто следить за этим ->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: Вам не нужно готовить каждую итерацию. Вы можете взять это внутри и поставить выше цикла. Вам нужно только подготовить его один раз.