0

私はidentica-phpshowStatusを使用して、次のようにを使用して単一の投稿を取得しています。

<?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だけを表示しようとしましたが、機能したので、投稿IDやXMLでは問題になりませんが、コードでは問題になります。

4

3 に答える 3

1

問題はidentica-phpではなく、 SimpleXMLElementをどのように使用しようとしているのかです。$ identica_status-> userプロパティは配列ではなく、反復可能でアクセス可能なオブジェクトです(PHPのドキュメントによると)。

試す:

$user = $identica_status->user->children();

または、次のようにドキュメントツリーのさらに下の要素にアクセスする方が簡単な場合があります。

$identica_status->user->screen_name
于 2011-09-10T23:09:44.803 に答える
1

statusはXMLのルート要素であるため、SimpleXMLElementオブジェクトにはゲッターがありません。動作するように再検討されたコードの下:

//$identica_status = new SimpleXMLElement($xml);
//$status = $identica_status->status;
$status = new SimpleXMLElement($xml);
$user = $status->user;
于 2011-10-14T10:50:12.077 に答える
0

リンクしているこのライブラリは本当に本当に古く(2009年9月)、それ以来StatusNetは大きく進化しています。これがもう機能しないのは驚きではありません。

ただし、IdenticaのAPIはTwitterのAPIに似ているため、TwitterのPHPライブラリを使用して必要な処理を実行できます。

于 2011-09-08T17:26:50.097 に答える