今日の目標は、RSSを解析して、投稿内容を表示することなのだ。
というわけで、まずは「XML RSS」とか「XML PHP パース」とかでググってみるわけ。
それで出てきたサイトの内容を参考にすれば、ほぼ終わり。

終わりなんだけど、、、終わりなんだけどさ、、、、、

さっぱり意味がわからないのですよ。

http://www.hawk.34sp.com/stdpls/php/xml_parse.html


これとか。
いや、わからないってのはスキルがないからわからないんだけどさ。

というわけで、一生懸命解析しました。

ダイジェストでお楽しみください。

XMLのパースな手順(ダイジェスト版)

材料:

  • XML(今回はRSS)のファイルまたはURL一つ
  • xml_parser_create();
  • xml_parse_set_option();
  • xml_parse_into_struct();
  • mb_convert_encoding();
  • そのほか、echoなど…

今回は単純に表示をしただけなので難しい事はしていません。とりあえず、流れは。

  1. RSSファイルを開く、読み込む
  2. 読み込んだファイルをパースする
  3. パース下ファイルを連想配列に入れる
  4. 配列を表示する

というような流れです。

ファイルを開くなどは、基本的な部分なので、個人的に何とかしてください。
まず、XMLのパースに必要なのはパーサです。

// パーサ作成
$parser=xml_parser_create();

これでパーサの作成完了。(パーサがなんなのかは知りません)
次に、パーサオプションを指定します。

// パーサオプションを指定
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);

これでパーサオプションの指定が完了です。(パーサオプションがなんなのかはしりま。。。略)
続いて、パースを実行して連想配列にします。

// パース実行、連想配列にパース結果代入
xml_parse_into_struct($parser,$buff,$values,$idx);
作ったパーサ[$parser]によって、[$buff]の中のXMLを[$values]に連想配列でぶち込みます。($idxがなんなのかはしr略)

// パーサ開放
xml_parser_free($parser);

連想配列にいれる。

それを表示する。

複数のRSSを読み込む場合は、XMLのヘッドタグを解析して、そこでフィードが終わってしまうので、やはりDBに一度つっこんで、フィードを再表示するようにひと工夫が必要そうだ。

[関連性があるかもしれない記事]

  1. PHP+XMLメモ
  2. PHPメモ:mb_convert_encodingの挙動
  3. デザイナーのためのPHP
  4. MySQL的なメモ
  5. ereg_replaceの初歩的なミス