php curl для получения xml feed не возвращает все данные - PullRequest
1 голос
/ 23 января 2012

Итак, у меня есть эта частная функция:

private function curl_get($url)
{
    // Initiate the curl session
    $ch = curl_init();

    // Set the URL
    curl_setopt($ch, CURLOPT_URL, $url);

    // Removes the headers from the output
    curl_setopt($ch, CURLOPT_HEADER, 0);

    // Return the output instead of displaying it directly
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

    // Execute the curl session
    $output = curl_exec($ch);

    // Close the curl session
    curl_close($ch);

    return $output;
}

И я использую, если, например, с этой ссылкой: http://www.metacafe.com/api/item/cb-xuFyGC0jJqPfhMoFnewj4Da_ZhHCz4L2/

Теперь проблема в том, что не возвращает все данные, все, что я получаю, это:

[data] => SimpleXMLElement Object
        (
            [@attributes] => Array
                (
                    [version] => 2.0
                    [source] => Metacafe
                )

            [title] => Metacafe
            [channel] => SimpleXMLElement Object
                (
                    [title] => SimpleXMLElement Object
                        (
                        )

                    [link] => http://www.metacafe.com/watch/cb-GKeDVFevZxk_rNri_uz_K01azz3uV_ZZ/
                    [image] => SimpleXMLElement Object
                        (
                            [url] => http://s.mcstatic.com/Images/MCLogo4RSS.jpg
                            [link] => http://www.metacafe.com
                            [title] => Metacafe
                            [height] => 65
                            [width] => 229
                        )

                    [description] => SimpleXMLElement Object
                        (
                        )

                    [item] => SimpleXMLElement Object
                        (
                            [id] => cb-GKeDVFevZxk_rNri_uz_K01azz3uV_ZZ
                            [author] => CBS
                            [title] => Romney Concedes South Carolina Primary
                            [link] => http://www.metacafe.com/watch/cb-GKeDVFevZxk_rNri_uz_K01azz3uV_ZZ/romney_concedes_south_carolina_primary/
                            [rank] => 4.00
                            [category] => News & Events
                            [description] => SimpleXMLElement Object
                                (
                                )

                            [guid] => http://www.metacafe.com/watch/cb-GKeDVFevZxk_rNri_uz_K01azz3uV_ZZ/romney_concedes_south_carolina_primary/
                            [pubDate] => 18 hours ago +0000
                        )

                )

        )

Почему он не возвращает описание и теги, которые очень важны для меня?

Ответы [ 2 ]

2 голосов
/ 23 января 2012

Дело не в curl, а в том, как SimpleXml обрабатывает CDATA:

$xml = simplexml_load_string($stringFromCurl, 'SimpleXMLElement', LIBXML_NOCDATA);

будет интерпретировать CDATA как текстовые узлы, см. XML-константы на PNP.net

1 голос
/ 23 января 2012

В SimpleXML есть «все данные», они просто не видны через print_r().

echo $your_simplexml_object->channel->item->description;
...