Получаете последние сообщения в блоге на WordPress, используя php? - PullRequest
0 голосов
/ 19 июня 2010

Я использовал этот 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

Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 24 сентября 2010

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

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

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

с

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

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

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

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

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

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

Paul.

...