Intereting Posts
Неустранимая ошибка: Class 'MySQLi' не найден Почему я не могу видеть исходный код с FF, когда у меня есть это утверждение if? Добавить переменную в конце URL – PHP Установка Pear Extension с установщиком PHP Как я могу остановить HTTP из экранов кавычек? Проверка электронной почты в системе yii Woocommerce php code get_price_html () Как вызвать родительские методы PHP из унаследованного метода? Включить те же заголовки и нижние колонтитулы в несколько html-файлов Способ получения всех алфавитных символов в массиве в PHP? Захват шаблона неизвестной репликации в PCRE Heroku не распознает мое приложение Laravel как приложение PHP и не выполняет установку композитора Исключение одиночных кавычек в PHP / MySQL не работает Gearman PHP Extension: Dead Job Server = медленный отклик со стороны всех рабочих Удалите поле проверки, если товары корзины относятся к определенным категориям товаров

Разбор RSS-канала в PHP с помощью DOM

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

У меня есть два файла: «index.php» и «test.php».

<!DOCTYPE html> <html> <head> <link rel = "stylesheet" type= "text/css" href = "style.css"> </head> <body> <h1>TEST SLIDER</h1> <p>First Title:<br> <?php include 'test.php'; $NPR_url = 'http://www.npr.org/rss/rss.php?id=1001'; $NPR = GetFeed($NPR_url); echo $NPR[0]['title']; ?> </p> </body> </html> 

и 'test.php'

 <?php function GetFeed($url){ $feed = new DOMDocument; $feed->load($url); $feed_array = array(); foreach($feed->getElementsByTagName('item') as $story){ $story_array = array ( 'title' => $story->getElementsByTagName('title')->item(0)->nodeValue, 'desc' => $story->getElementsByTagName('description')->item(0)->nodeValue, 'link' => $story->getElementsByTagName('link')->item(0)->nodeValue, 'date' => $story->getElementsByTagName('pubDate')->item(0)->nodeValue ); array_push($feed_array, $story_array); } return $feed_array; } ?> 

DOMDocument не смог получить объект «channel» после разбора. Вот функция GetFeed () с помощью simpleXML:

test.php

  <?php function GetFeed($url){ $feed = simplexml_load_file($url); $feed_array = array(); foreach($feed->channel->item as $story){ $story_array = array ( 'title' => $story->title, 'desc' => $story->description, 'link' => $story->link, 'date' => $story->date ); array_push($feed_array, $story_array); } return $feed_array; } ?> 

Надеюсь, поможет. Ваш index.php останется таким же.

Попробуй это ::

  <?php $rss = new DOMDocument(); $rss->load($url); $feed = array(); foreach ($rss->getElementsByTagName('item') as $node) { $item = array ( 'title' => $node->getElementsByTagName('title')->item(0)->nodeValue, 'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue, 'link' => $node->getElementsByTagName('link')->item(0)->nodeValue, 'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue, ); array_push($feed, $item); } $limit = 5; for($x=0;$x<$limit;$x++) { $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']); $link = $feed[$x]['link']; $description = $feed[$x]['desc']; $date = date('l F d, Y', strtotime($feed[$x]['date'])); echo '<p><strong><a href="'.$link.'" title="'.$title.'">'.$title.'</a></strong><br />'; echo '<small><em>Posted on '.$date.'</em></small></p>'; echo '<p>'.$description.'</p>'; } ?> 

Edit : Если вы ищете более продвинутый способ, вы можете использовать этот классный класс Дэвидом Грюдлом.