MagpieRSSでcategoryを配列で取得する

MagpieRSSは、RSSやATOMなんかを取得してパースするのにとっても便利なライブラリではあるのですが、categoryなど同一のタグが複数存在する場合、単に文字列を結合するだけで、元のカテゴリの判別が不正確になる恐れがあります。
これを、項目が1つであれば、単に文字列として、複数存在する場合は、配列としてパースするようにカスタマイズしてみました。

修正するファイルは、rss_parse.incのconcatメソッド。
ここで文字列の結合を行っています。

オリジナルコード

    function concat (&$str1, $str2="") {
        if (!isset($str1) ) {
            $str1="";
        }
        $str1 .= $str2;
    }

これを、

  1. $str1が設定済みで、配列でなければ、$str1を配列に変換
  2. $str1が配列であれば、$str2を配列要素として追加
  3. $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など複数ある可能性のある要素取得の正確性が高まりますね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です