2010-06-19 4 views
0

Я использовал этот PHP, чтобы принести последнюю запись моего блога:Извлечение последнего сообщения в блоге на wordpress с помощью php?

function read_rss($display=0,$url='') { 
    $doc = new DOMDocument(); 
    $doc->load($url); 
    $itemArr = array(); 

    foreach ($doc->getElementsByTagName('item') as $node) { 
     if ($display == 0) { 
      break; 
     } 

     $itemRSS = array (
      'title'  => $node->getElementsByTagName('title')->item(0)->nodeValue, 
      'description' => $node->getElementsByTagName('description')->item(0)->nodeValue, 
      'link'  => $node->getElementsByTagName('link')->item(0)->nodeValue, 
     ); 

     array_push($itemArr, $itemRSS); 

     $display--; 
    } 
    return $itemArr; 
} 

Я узнал об этом от учебника, как я не был уверен, как сделать эту задачу. Однако он работает, но я продолжаю получать эту ошибку в моем журнале ошибок:

[12-Jun-2010 06:13:36] PHP Warning: DOMDocument::load() [<a href='domdocument.load'>domdocument.load</a>]: Document is empty in http://www.prettyklicks.com/blog/?feed=rss2, line: 1 in public_html/includes/functions.php on line 153 
[12-Jun-2010 06:13:36] PHP Warning: DOMDocument::load() [<a href='domdocument.load'>domdocument.load</a>]: Start tag expected, '&lt;' not found in http://www.prettyklicks.com/blog/?feed=rss2, line: 1 in public_html/includes/functions.php on line 153 

Любые идеи?

Спасибо!

+0

Что находится на 'public_html/portfolio.php в строке 16' и' public_html/includes/functions.php в строке 79'? –

+0

жаль, что на самом деле не было ничего общего с ошибкой, я отредактировал! исходный вопрос –

ответ

0

У меня была такая же проблема, и вот решение:

Заменить строку:

$ doc-> нагрузка ($ URL);

с

$ doc-> loadXML (preg_replace ("/> \ s + <", file_get_contents ($ URL)));

Это делается для того, чтобы загрузить URL-адрес в строку, вычеркивать все пробелы между тегами, а затем передавать их в объект DOMDocument для загрузки.

Почему это должно быть пробелы? Я не уверен, но кажется, что RSS-канал WordPress содержит пробелы, чтобы сделать его красивым отступом, но это мешает анализу DOMDocument и делает его похожим на отсутствующий тег.

Кредит http://netweblogic.com/php/domdocument-whitespace-php/, где я нашел ответ; они решают одну и ту же проблему для другой ситуации.

Странно (и я этого не понимаю), мой код работает без обходного пути на моем сервере разработки, но не на рабочем сервере. Я не уверен, почему, но он должен иметь какое-то отношение к версии & конфигурации Apache/PHP/WordPress.

В любом случае, я надеюсь, что это поможет, и еще не поздно!

Paul.

+0

Ваш совет был на месте, за исключением того, что ваш код нуждался в небольшой настройке. вам не хватало параметра в preg_replace и разделителя в вашем шаблоне. Но спасибо, что сработало хорошо! –