PHP Twitter API 无法获取georss:point 并将其存储为变量?

Posted

技术标签:

【中文标题】PHP Twitter API 无法获取georss:point 并将其存储为变量?【英文标题】:PHP Twitter API Can't grab georss:point and store as variable? 【发布时间】:2011-04-07 03:54:47 【问题描述】:

我是 API 的新手,就像今天一样。我已经学会了如何简单地调用 twitter api xml 数据并从帖子中提取某些内容。但我的问题是我似乎无法弄清楚如何在 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>

当我运行代码时,我得到: 解析错误:语法错误,第 11 行 C:\inetpub\vhosts\allencoded.com\httpdocs\twitter.php 中的意外 ':'

当我删除第 11 行的代码时,一切正常。

【问题讨论】:

georss 是一个命名空间。 ***.com/questions/5517887/… 和 devzone.zend.com/node/view/id/688#Heading3 应该会有所帮助。 嘿,只是想警告你,你非常接近被禁止在 SO 上提问。不要删除带有答案的问题并开始回答自己以躲避即将到来的禁令。 【参考方案1】:

在处理命名空间元素(如namespace_name:element_name)时,您需要告诉 SimpleXML 加载该命名空间的元素(默认是加载没有命名空间的元素)。为此,您使用SimpleXMLElement::children() (docs)。

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

$xml-&gt;status-&gt;geo 那里的关键行的第一个块获取第一个状态元素的第一个 geo 元素。然后我们请求属于 georss 命名空间的子元素(因此,任何 georss:… 元素),然后指定我们想要(第一个,唯一的)point

【讨论】:

【参考方案2】:

我认为 PHP 不会逐字解析 XML。虽然georss:point 是 XML 树中的一个有效节点,但该语法对 PHP 来说意味着别的东西。尝试对 $xml-&gt;status[0]-&gt;coordinates 值执行 print_r() 并查看属性是什么。

【讨论】:

是的。看起来您必须再次调用 Place 属性中提供的 URL,这会为您获取一个要解码的 JSON 对象。欢乐时光... print_r()(和 var_dump())在 SimpleXMLElement 对象上仅报告非命名空间项。但是它们可以访问! 正如其他人指出的那样,您需要使用$xml-&gt;status[0]-&gt;children("georss", TRUE) 来访问它们,但这就是对我有用的代码:-)

以上是关于PHP Twitter API 无法获取georss:point 并将其存储为变量?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Twitter API、PHP 和 curl 发布图像和文本?媒体/上传和状态/更新

如何使用 Twitter API 获取用户访问令牌和访问密钥

我们可以从 Twitter oauth API 获取电子邮件 ID 吗?

Twitter API 返回“无法对您进行身份验证”。

如何通过经典 ASP 使用 Twitter 获取搜索/推文 api 1.1

如何通过iOS中的Twitter API获取用户电子邮件地址?