プロフィール

rebis

Author:rebis
高校生です。
C言語とかPHPなどをやってます。
起業するのが夢。
でも最近は起業しなくても同人で良いかな。とか思ってる。
ドラえもんが好きです。

連絡先
rakuton_taiyaki@yahoo.co.jp

携帯のメアドは載せません。




にほんブログ村 ゲームブログ ゲームプレイ動画へ
にほんブログ村

blogram投票ボタン

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

スポンサーサイト

Category : スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【PHP】 content:encoded 要素を抜き出す方法【RSS1.0】【simplexml】

Category : 開発
今日はPHPの話をします。


とある問題に直面しまして、ここ1週間ぐらい、ずっと悪戦苦闘していました。
そしてやっと解決しました。
その問題と解決の内容が以下です。


xmlをパースする話。
simplexml_load_stringっていう関数に関係のある話。

RSS1.0には、content:encodedっていう要素があってね。

「:」が含まれているから、simplexml_load_string関数ではその要素は取り出せない。

そこで、str_replaceで

xml=str_replace('<content:' ,'<content_',$xml);
xml=str_replace('</content:' ,'</content_',$xml);
(<の半角記号を使うとfc2ブログの使用上、正常に表示されないのでここでは全角で書きましたが実際には半角です。)

として「:」を「_」に変換した。

そして、
$parsed_xml = simplexml_load_string($xml,'SimpleXMLElement', LIBXML_NOCDATA);

content:encodedの中は、CDATAで書かれているはずです。
ですからそれを取り出す場合には、
第2引数に 'SimpleXMLElement' を
第3引数に LIBXML_NOCDATA
を指定しなければなりません。

MagpieRSSを使う方法もありますがね。
こっちの方が個人的に簡単で良いです。
まぁ、str_replaceで「:」を「_」に変えて解決するあたり、正攻法とは言えないでしょうが。

正攻法と言えば、

$parsed_xml=simplexml_load_string($xml);
foreach ($parsed_xml->item as $i) {
$node = $i->children('http://purl.org/rss/1.0/modules/content/');
print trim($node->encoded);
}

↑このコードで抜き出せます。

・・・ん??
この記事を書いてて思いました。
このコード使う方が、、、楽じゃね?正攻法だし・・・。こちらを使わない理由が無い・・・。

さてどうしようか(^ω^)

力技ばんざい!

MagpieRSSとバイバイできそうです。
簡単にWPのrssゲットできました。
記事を読んでみれば当たり前すぎて笑ってしまいました。
今までsimplexml_load_fileばかりを使って取得していたのでloadstringは完全に盲点でした。

あざーーーーーーーす!

No title

お役にたてて嬉しいです^^

MagpieRSSはなんか面倒で嫌いですw
非公開コメント

  

検索フォーム

RSSリンクの表示

リンク

ブロとも申請フォーム

この人とブロともになる

QRコード

QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。