PHP Twitter API Не можете получить georss: указать и сохранить как переменную? - PullRequest
1 голос
/ 07 апреля 2011

Я новичок в API, как сегодня новый.Я узнал, как просто вызывать данные api xml в твиттере и извлекать некоторые вещи из поста.Моя проблема, однако, заключается в том, что я не могу понять, как извлечь Geo или Coordinates в Twitter API и отобразить их или сохранить как переменную.

<html>
<?php
$xmldata = 'http://twitter.com/statuses/user_timeline/allencoded.xml';
$open = fopen($xmldata, 'r');
$content = stream_get_contents($open);
fclose($open);
$xml = new SimpleXMLElement($content);
?>
<?php 
$geo = $xml->status[0]->coordinates->georss:point; //<---PROBLEM POINT!!!!
?>
<body>
<table>
<tr>
<td><img src="<? echo $xml->status[0]->user->profile_image_url; ?>" /></td>
<td>
<? echo $xml->status[0]->text; ?> at <? echo $xml->status[0]->created_at; ?> by <? echo $xml->status[0]->user->name; ?> 
</td>
<td>
GEO IS AT:<? echo $geo; ?>
</td>
</tr>
</table>
</body>

</html>

Когда я запускаю код, я получаю:Ошибка разбора: синтаксическая ошибка, неожиданное ':' в C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ twitter.php в строке 11

Когда я удаляю код для строки 11, все работает, хотя.

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

При работе с элементами пространства имен (например, namespace_name:element_name) необходимо указать SimpleXML загрузить элементы этого пространства имен (по умолчанию загружаются элементы без пространства имен).Для этого вы используете SimpleXMLElement::children() ( документы ).

$xml = simplexml_load_file('http://twitter.com/statuses/user_timeline/allencoded.xml');
$geo = (string) $xml->status->geo->children('georss', true)->point;
echo $geo;

Первый блок ключевой строки $xml->status->geo получает первый элемент geo первого элемента статуса,Затем мы запрашиваем дочерние элементы, которые принадлежат пространству имен georss (то есть любые элементы georss:…), после чего указывается, что мы хотим (в первую очередь, только) point.

1 голос
/ 07 апреля 2011

Я не думаю, что PHP дословно проанализировал XML.Хотя georss:point является допустимым узлом в дереве XML, этот синтаксис означает что-то еще для PHP.Попробуйте выполнить print_r() для значения $xml->status[0]->coordinates и посмотрите, что оно говорит о свойствах.

...