XML配列構造体の処理
xml_parse_into_structでXMLデータを格納した配列構造体を処理したい場合はどうすれば良いでしょうか?DOMであればdomxml拡張モジュール(PHP4の場合)があります。配列構造体ではforeachで調べていくしかなさそうです。
「PHPでのXMLファイルの読込み」で格納した配列構造体$valsをforeachで処理する簡単なコードを示します。
foreach($vals as $key=>$value){
if($value[tag]=='TITLE'||$value[tag]=='AUTHOR'){
echo "key:".$key." ";
echo $value[tag].'='.mb_convert_encoding($value[value],"SJIS","UTF-8")."\n";
}
}
$value[tag]=='TITLE'でTITLE要素であるかどうかを調べています。元々のタグはtitleと小文字だったのですが、デフォルト処理でTITLEと大文字に変換されてしまっていることに注意してください。
mb_convert_encoding($value[value],"SJIS","UTF-8")は要素の値である$value[value]をUTF-8からSJISに変換した文字列になります。実行結果は次のようになります。$keyは親配列のインデックスですので、あまり利用価値はないですね。
key:2 TITLE=AJAXの秘密 key:4 AUTHOR=あいう key:9 TITLE=PHPのオブジェクト key:11 AUTHOR=けけけ key:16 TITLE=入門Linux key:18 AUTHOR=リーナス