[PHP-users 28301] Re: RSS2.0 形式のファイルを扱いたい

SHIMOOKA Hideyuki dimension @ pat.hi-ho.ne.jp
2006年 2月 2日 (木) 00:51:15 JST


下岡です。

---- Tadashi Jokagiさん曰く...

>      どれも使ったことないですがメモってあるものから.試したらレポート
>    が出てくるとうれしいです.
(snip)
>http://www2.autistici.org/bakunin/codes.php
>C のライブラリだけど PHP の拡張モジュールを作成できる.

ナイスネタ!
ということでレポートです:-)

----ここから

■環境
 Vine Linux 3.1
 PHP4.3.11

■インストール
 http://www2.autistici.org/bakunin/libmrss/doc/

 にあるとおり、libnxml、libcurlを先にインストールする必要が
 ある。libnxmlはソースからconfigure・make・make install、
 libcurlはcurl-develのrpmをインストール。ただし、libnxmlは
 「--prefix=/usr」を付けた方が問題がないかも知れません。

 この後、まずlibmrssをインストール。手順はconfigure・make・
 make installで問題なし。

 インストール後、phpmrssに移動し、phpmrss_install.shを実行。
 PHPのextensions/(no-)?debug-non-zts-20020429ディレクトリに
 mrss.soが作成されていることを確認。

 必要であれば、php.iniのextensionディレクティブを追加し、
 Apache再起動。

■サンプルスクリプト
 mRssに付いていたものをちょっと変えてます。mrss_get関数で
 parse結果が連想配列で取得できますので、後は煮るなり焼くなり。
 ただし、マルチバイト文字を含むRSSの場合、エンコーディング
 変換が必要になります。

 <pre>
 <?php
 //dl("mrss.so");
 
 function check ($a) {
   if(mrss_error($a)!=MRSS_OK)
   {
     echo "*** ".mrss_strerror($a)." ***\n";
     exit;
   }
 }
 $data=mrss_parse_url("http://mixfeed.jp/1494");
 check($data);
 $data = mrss_get($data);
 echo mb_convert_encoding($data['title'], mb_internal_encoding(), 'auto');
 echo mb_convert_encoding($data['description'], mb_internal_encoding(), 'auto');
 //var_dump(mrss_get($data));
 ?>
 </pre>

----ここまで

-- 
SHIMOOKA Hideyuki


PHP-users メーリングリストの案内