[PHP-users 34554] xml-rpcで返り値を変数に代入する方法をご教授ください。

Afical linkmaster @ afical.com
2009年 4月 23日 (木) 17:49:07 JST


MTのxml-rpc機能を利用してブログの情報を取得するWebアプリを開発しております。
PHPでXML-RPCのクライアントを作成してMTに「blogger.getUsersBlogs」を送信すると
結果が以下のような内容でブラウザに表示されます。
--------------------------------------------------------------------
Array
(
    [0] => Array
        (
            [url] => http://hogehoge.jp/blog1
            [blogName] => テストブログ1
            [blogid] => 1
        )
    [1] => Array
        (
            [url] => http://hogehoge.jp/blog2
            [blogName] => テストブログ2
            [blogid] => 2
        )
)
--------------------------------------------------------------------
私がやりたい事は、上記の結果の内容から[blogName] や[blogid] を変数として代入したいです。
例えば、
$blogname1    =[0] => Array の[blogName] (上記の場合、テストブログ1)
$url1             =[0] => Array の[url] (上記の場合、http://hogehoge.jp/blog1) 

$blogname2    =[1] => Array の[blogName] (上記の場合、テストブログ2)
$url2             =[1] => Array の[url] (上記の場合、http://hogehoge.jp/blog2) 


とても簡単なことかもしれませんが、ぜひ教えてください。
よろしくお願いいたします。

--------------------------------------------------------------------
参考として、上記の結果を返すPHPのソースを記述いたします。


<?php
header("Content-Type: text/html;charset=UTF-8");
require_once("XML/RPC.php");
$GLOBALS['XML_RPC_defencoding'] = "UTF-8";

//XML-RPCインタフェース、ユーザ定義
$mt_host = "hogehoge.jp";                //MTのホスト情報
$mt_xmlrpc_path = "/mt-xmlrpc.cgi"; //mt-xmlrpcまでのパス
$mt_user = 'xxxxxx';                        //MTのユーザー
$passwd ='xxxxxxxx';                       //MTのWebサービスパスワード

//クライアントの作成
$c = new XML_RPC_client( $mt_xmlrpc_path, $mt_host, 80 );

$appkey = new XML_RPC_Value( '', 'string' );
$username = new XML_RPC_Value( $mt_user, 'string' );
$passwd = new XML_RPC_Value( $passwd, 'string' );

//メッセージ作成
$message = new XML_RPC_Message(
  'blogger.getUsersBlogs',
  array($appkey, $username, $passwd) );
//$message = new XML_RPC_Message('mt.supportedMethods');

//メッセージ送信
$result = $c->send($message);

if( !$result ){
  exit('Could not connect to the server.');
}else if( $result->faultCode() ){
  exit('XML-RPC fault ('.$result->faultCode().'): '
   .$result->faultString());
}

$blogs = array_map( 'array_convEnc', XML_RPC_decode( $result->value() ) );
echo "<pre>";
print_r($blogs);
echo "</pre>";

function array_convEnc($a)
{
  if( is_array($a) ){ return array_map( 'array_convEnc', $a ); }
  return @mb_convert_encoding(
   $a, mb_internal_encoding(),
   $GLOBALS['xmlrpc_internalencoding'] );
}
?>





T,aoki
linkmaster @ afical.com 



PHP-users メーリングリストの案内