2009年12月05日 過去Blog
phpでrssの情報を抜き出したい場合は、titleやlinkの要素は以下の通りで抜き出せます。
<?php // Load and parse the XML document
$rss =  simplexml_load_file('http://partners.userland.com/nytRss/nytHomepage.xml');
$title =  $rss->channel->title;
?>
<html xml:lang=”en” lang=”en”> <head> <title><?php echo $title; ?></title> </head> <body> <h1><?php echo $title; ?></h1> <?php // Here we’ll put a loop to include each item’s title and description foreach ($rss->channel->item as $item) { echo “<h2><a href='” . $item->link . “‘>” . $item->title . “</a></h2>”; echo “<p>” . $item->description . “</p>”; } ?> </body> </html> 最初に書いた通り、上記でtitleなどは取得出来ますが、<content:encoded>など、
<![CDATA[
が含まれる箇所が取得できません。 そこで、「MagpieRSS – PHP で使える RSS パーサー。」を参考にMagpieRSSというものを利用しました。

使い方

index.php に http://yamazon.org/feed のRSSを埋め込むとして手順を示します。
  • http://magpierss.sourceforge.net/ で MagpieRSS (magpierss-0.3.tar.gz) を入手。
  • magpierss-0.3.tar.gz を解凍。
  • 拡張子が .inc のファイルと extlib フォルダを index.php と同じディレクトリにアップロード。
  • 同じディレクトリ(サーバ上)の下に cache という名前のディレクトリを作る。
  • index.php の中のヘッドラインを埋め込みたい位置に以下のコードを挿入。
以上の設定が完了したら、以下のようなソースで抜き出します。
<?php
include('rss_fetch.inc');

$url = "http://yamazon.org/feed";
$rss = fetch_rss($url);

if($rss){
$items = $rss->items;
foreach($items as $item){
$content = $item["content"]["encoded"];
$content = mb_convert_encoding($content, "UTF-8", "auto");
echo $content;
}
}else{
echo "file not found.";
}
?>
これで、<content:encoded>が抜き出せましたが、文字化けしてしまいました。 mb_convert_encodingでエンコードしても文字化けのまま・・・。(どうやらASCIIに変換されている模様?) 文字化けについては解決次第、報告しようと思います。

<追記>

文字化けの件が解決したのでメモしておきます。

(Jcode.phpを使う方法 – mb_convert_encodingが使えない場合の解決法その1)

  • http://www.spencernetwork.org/jcode/ でJcode.php(jcode_1.34.zip)を入手。
  • jcode_1.34.zip を解凍。
  • jcode.phps を jcode.php に拡張子を変えた後、readme.txt 以外のファイルを同じディレクトリにアップロード。(jcode.php と code_table.ucs2jis のみでも可)
  • コードを以下の様に変更。
 <?php
//MagpieRSS
 include('rss_fetch.inc');
 require_once 'code_table.ucs2jis';
 require_once 'jcode.php';

 $url = $search_domain;
 $rss = fetch_rss($url);

 $title = $rss->channel["title"];
 //JcodeConvert($str, $from, $to) 0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8
 //今回は変換元がEUC-JPだったので、PASS,4 でUTF-8に変換してます。
 $title = JcodeConvert($title, 0, 4);

 echo $title;

 if($rss){
 $items = $rss->items;
 foreach($items as $item){
 $content = $item["content"]["encoded"];
 $url   = $item["link"];

 $content = JcodeConvert($content, 0, 4);
 echo $url;
 echo $content;

 }
 }else{
 echo "file not found.";
 }
//MagpieRSS
 ?>
私の場合は以上で、文字化けもなく <![CDATA[ が含まれる要素も全て取得出来ました。 RSSを取得する、その他の方法として

XML::FeedPPで、content:encodedなどを取得する方法

などもあるようです。
//JcodeConvert($str, $from, $to) 0:PASS(無変換)1:EUC-JP 2:Shift_JIS 3:ISO-2022-JP(JIS) 4:UTF-8
http://www.doyouphp.jp/php5/php5_simplexml.shtml

この投稿へのコメント

コメントはまだありません。

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CAPTCHA


ピックアップ記事

iPhoneアプリをAppStoreに公開する手順(編集中)

2011年02月05日 過去Blog
iTunes Connectを利用してアプリケーションを送信し、App Storeでの公開を依頼するには、 以下のものが必要です。 ■ アプリケーションのバイナリ ■ iOS用のバイナリ:iPhoneおよびiPod touch用の57ピクセルのアイコンとオプションの114 ピクセルの高解像度アイコン、またはiPad用の50ピクセルのアイコンと72ピクセルのアイコン を含む パソコン用のApp…
「iPhoneアプリをAppStoreに公開する手順(編集中)」をはてなブックマークに追加

PHP で プログレス表示(進み具合を表示させる)

2010年02月20日 過去Blog
参考元:http://www.enbridge.jp/blog/2007/08/17232951.php [php] <?php echo "処理を開始します。しばらくお待ちください...<br />n"; echo str_pad(" ",4096)."<br />n"; …
「PHP で プログレス表示(進み具合を表示させる)」をはてなブックマークに追加

ABPeoplePickerNavigationControllerのキャンセルボタンを無効にし、新規追加ボタンを実装する

2011年01月17日 過去Blog
viewController内に以下のようにインターフェースを宣言します。 @interface ABPeoplePickerNavigationController (Expose) @property (nonatomic, assign) BOOL allowsCancel; @property (nonatomic, assign) BOOL allowsCardEditing; @end 同じファイル内に、以下のように設定します。 ABPeoplePickerNavigationController *contactsNavController = [[ABPeoplePickerNavigationController alloc] init]; contactsNavController.tabBarItem.title = @"連絡先"; contactsNavController.allowsCancel = NO; contactsNavController.allowsCardEditing = YES; contactsNavController.peoplePickerDelegate=self; …
「ABPeoplePickerNavigationControllerのキャンセルボタンを無効にし、新規追加ボタンを実装する」をはてなブックマークに追加

iPhone アプリにアイコンを設定する

2010年12月09日 過去Blog
自作のiPhoneアプリにアイコンを設定する方法です。 まず、アイコンに使いたい画像を準備します。 画像サイズ 57px × 57px アイコン画像の設定 (1)プロジェクト内のResourceフォルダを右クリックし、既存のファイルを追加を選びます。そして、準備しておいた画像を選択、このとき表示される画面ないの「デスティネーション...」の項目をチェックし、追加します。 (2)その後、プロジ…
「iPhone アプリにアイコンを設定する」をはてなブックマークに追加

iPhoneアプリのメモリリークを検証する方法

2011年01月06日 過去Blog
この記事に関しては、未完結ですが、覚え書きとして、随時追加していきます。 以下のような方法があるらしい。 Instruments XCodeのメニューの「実行」→「パフォーマンスツールを使って開始」→「Leaks」を選択して、「Instruments」 Allocations Xcodeからは「実行」メニューの「パフォーマンスツールを使って実行」から利用することができます。 Xcodeでローカ…
「iPhoneアプリのメモリリークを検証する方法」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy