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など複数ある可能性のある要素取得の正確性が高まりますね。