スキップメニュー:コンテンツへナビゲーションへ

乱雑モックアップ らんざつ[乱雑] (名・形動)[文]ナリ 入り乱れていること。乱れていて秩序がないこと。また、そのさま。

もっと快適にインターネットを活用できるブラウザ達



tumblrのxmlを読み込んで画像を表示しようと思ったので

simplexmlでxmlを読みこむが何故だか画像urlの要素にアクセス出来ない。

(結論を先に見る)

tumblr APIの説明和訳
http://(you).tumblr.com/api/read|うちのtumblrのxml

xml抜粋

<?xml version="1.0" encoding="UTF-8"?>
<tumblr version="1.0">
 <tumblelog name="dobinn69" timezone="US/Eastern" title="新規ドキュメント">やっとタイトルを変えて写真変更の仕方が分かったレベル</tumblelog>
 <posts start="0" total="5178">
  <post id="423624165" url="http://dobinn69.tumblr.com/post/423624165" url-with-slug="http://dobinn69.tumblr.com/post/423624165/x-117-suzukichiyo-ak47-naha" type="photo" date-gmt="2010-03-03 05:44:38 GMT" date="Wed, 03 Mar 2010 00:44:38" unix-timestamp="1267595078" format="html" reblog-key="bcque5Cz" slug="x-117-suzukichiyo-ak47-naha">
   <photo-caption>&lt;/blockquote&gt;</photo-caption>
   <photo-link-url>http://ffffound.com/image/2c4ba8b6bcb787992657ac8266ce5ddbc20588bd</photo-link-url>
   <photo-url max-width="1280">http://dobinn69.tumblr.com/photo/1280/423624165/1/tumblr_kyfivkpZ7u1qzlhmu</photo-url>
   <photo-url max-width="500">http://29.media.tumblr.com/tumblr_kyfivkpZ7u1qzlhmuo1_500.jpg</photo-url>
   <photo-url max-width="400">http://27.media.tumblr.com/tumblr_kyfivkpZ7u1qzlhmuo1_400.jpg</photo-url>
   <photo-url max-width="250">http://26.media.tumblr.com/tumblr_kyfivkpZ7u1qzlhmuo1_250.jpg</photo-url>
   <photo-url max-width="100">http://28.media.tumblr.com/tumblr_kyfivkpZ7u1qzlhmuo1_100.jpg</photo-url>
   <photo-url max-width="75">http://25.media.tumblr.com/tumblr_kyfivkpZ7u1qzlhmuo1_75sq.jpg</photo-url>
  </post>

この中のphoto-urlのどれかが欲しいので最初にこう書いた。
tumblr.php

$xml=simplexml_load_file("http://dobinn69.tumblr.com/api/read");
$pu=$xml->posts->post->photo-url[0];

するとこんなエラーが。
表示結果

Parse error: syntax error, unexpected '[' in ファイル名 on line 2

あるぇ?

なんでかなぁなんでかなぁと検索してみるけど配列へのアクセスは別に間違ってないようだ。

試しに適当なxmlを作って上記方法でアクセスすると取得出来た。

test.xml

<?xml version="1.0" encoding="utf-8"?>
<aaa>
 <posts>
  <post>
   <testTitle>test-title</testTitle>
   <testText>test00</testText>
   <testText>test10</testText>
   <testText>test20</testText>
   <testText>test30</testText>
   <testText>test40</testText>
  </post>
 </posts>
</aaa>

test.php

<?php

$xml=simplexml_load_file("test.xml");
//print_r($xml);
$test=$xml->posts->post->testText[0];
print($test);
?>

表示結果

test00

そして結論

二つを見比べてみる、どうも要素名にハイフンが入っているのが問題らしい気がする。

さっそくgoogleで「xml ハイフン」と検索してみると結構でてきた!
simplexml_load_fileの問題じゃなかったわけだ。

よってこんな風に変更

$pu=$xml->posts->post->{"photo-url"}[0];

参考:92. ハイフン付きのメンバ変数名を参照する方法

中括弧とクォーテーションで囲います。こうすることでハイフンが使われている要素名も参照できるようになります。

なるほどー。

php カテゴリー内の

back to top

コメントはまだありません »

コメントはまだありません。

この投稿へのコメントの RSS フィード。 TrackBack URL

コメントする

You can add images to your comment by clicking here.



iOS4.1で3Gのモッサリ感が減った気がする。カメラの起動が速い。マップもなんか速い。大体11時間前

tumblr

あわせて読みたいブログパーツ

Back to Top↑

Copyright © 乱雑モックアップ. All Rights Reserved.