MagpieRSSは、RSSやATOMなんかを取得してパースするのにとっても便利なライブラリではあるのですが、categoryなど同一のタグが複数存在する場合、単に文字列を結合するだけで、元のカテゴリの判別が不正確になる恐れがあります。
これを、項目が1つであれば、単に文字列として、複数存在する場合は、配列としてパースするようにカスタマイズしてみました。
修正するファイルは、rss_parse.incのconcatメソッド。
ここで文字列の結合を行っています。
オリジナルコード
function concat (&$str1, $str2="") { if (!isset($str1) ) { $str1=""; } $str1 .= $str2; }
これを、
- $str1が設定済みで、配列でなければ、$str1を配列に変換
- $str1が配列であれば、$str2を配列要素として追加
- $str1が配列でなければ、$str1に$str2を代入
と変更します。
カスタマイズコード
function concat (&$str1, $str2="") { if ( isset($str1) && ! is_array( $str1 ) ) { $str1 = array( $str1 ); } if ( is_array( $str1 ) ) { $str1[] = $str2; } else { $str1 = $str2; } }
あとは、取得側でis_array()を使って分岐すれば、categoryなど複数ある可能性のある要素取得の正確性が高まりますね。