我正在使用identica-php使用showStatus
发布一条帖子,就像这样:
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
include '../scripts/identica.lib.php';
include '../misc.php';
// your identi.ca username and password
$username = $_GET['u'];
$password = $_GET['p'];
$userid = $_GET['uid'];
$postid = $_GET['pid'];
// initialize the identi.ca class
$identica = new Identica($username, $password, "Terrarium");
// fetch the timeline in xml format
$xml = $identica->showStatus("xml", $postid);
$identica_status = new SimpleXMLElement($xml);
$status = $identica_status->status;
$user = $status->user;
echo '<div id="singleStatus">' . $status->text . "</div><br />";
echo '<div class="single_posted_at">' . $status->created_at . " via " . $status->source . '</div>';
echo '<img src="' . $user->profile_image_url . '" class="identica_image">';
echo '<a href="http://identi.ca/' . $user->screen_name . '" class="nameURL">' . $user->name . '</a>: ';
?>
但是当我尝试运行代码时,我得到的一切都是这样的:
我做错了什么? XML结果的示例:http://pastebin.com/Q52yfQp9
PS:我试图只显示XML来进行测试并且它有效,所以它不会是Post ID或XML的问题,而是代码 < / p>
答案 0 :(得分:1)
问题不在于identica-php,而是您尝试使用 SimpleXMLElement 的方式。您的 $ identica_status-&gt;用户属性不是数组,它是一个可迭代且可访问的对象(根据the PHP docs)。
尝试:
$user = $identica_status->user->children();
或者仅仅访问文档树中的元素可能更简单,如下所示:
$identica_status->user->screen_name
答案 1 :(得分:1)
status是XML的根元素,因此它在SimpleXMLElement对象中没有getter。 在您的代码下方重新访问工作:
//$identica_status = new SimpleXMLElement($xml);
//$status = $identica_status->status;
$status = new SimpleXMLElement($xml);
$user = $status->user;
答案 2 :(得分:0)
你链接到的这个库真的非常古老(2009年9月),从那时起StatusNet已经发展了很多。我不会感到惊讶,这不再适用了。
然而,由于Identica的API类似于Twitter,你可以使用Twitter PHP库来做你想做的事。