извлечение информации из curl - PullRequest
1 голос
/ 24 июня 2010

Я получаю информацию из soundcloud с помощью curl.это дает много информации.но я хочу отфильтровать его.

<?php
    $curl_handle=curl_init();
    curl_setopt($curl_handle,CURLOPT_URL,'http://api.soundcloud.com/tracks ');
    curl_exec($curl_handle);
    curl_close($curl_handle);
?>

как я могу отфильтровать поступающую от него информацию, например stream-url, downloadable, title и т. д.

Ответы [ 2 ]

2 голосов
/ 24 июня 2010

Существует ряд инструментов для извлечения того, что вы хотите.

Поток, который вы загружаете, представляет собой файл xml, поэтому вы можете направить вывод этого потока в какой-то парсер, либо в php, либо непосредственно вкомандная строка.

Вы можете увидеть встроенный синтаксический анализатор XML для php здесь: http://php.net/manual/en/book.xml.php

EDIT Вот пример использования

<?php
// Download the Data
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,'http://api.soundcloud.com/tracks ');
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,true);
$xml_data = curl_exec($curl_handle);
curl_close($curl_handle);

//Parse it
$xml = simplexml_load_string($xml_data);

foreach ($xml->track as $track) {
    print "{$track->title}\n";
    print "\tStream URL: {$track->{'stream-url'}}\n";
}

?>

Iв итоге вместо SimpleXML использовался

0 голосов
/ 24 июня 2010
<code><?php

$url = 'http://api.soundcloud.com/tracks';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$body = curl_exec($ch);
curl_close($ch);

$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $body, $data);
xml_parser_free($parser);

print "<h1>The XML as a relatively flat PHP data structure</h1>";
print "<pre>";
print htmlentities($body);
print "
"; печать""; print"

Необработанные данные XML

"; print"
";
print htmlentities(print_r($data, true));
print "
"; print"
";

?>
</code>
...