simplexml_load_fileとアンパサンド

&(アンパサンド)には、何度も悩まされているのですが、またもや!はまりました(--#

その顛末記です。




RSSを結合するにはYahoo!Pipesなど外部のWebサービスを使えば超ラクチンです。が、毎回Yahoo!Pipesというのも面倒です。できればphpで完結させたいのと、使い回しがきくように……ということで避けます。


そこで、simplexml_load_fileRSSを読み込み、HTMLScrapingのサンプルスクリプトHTMLToFeed.class.phpに渡すという方法をとっています。


が。

DOMDocument::createElement() [function.DOMDocument-createElement]: unterminated entity reference

というWarningを吐きます。


なんかアンパサンドがある場合にでるエラーっぽいなぁと思っていたら、やっぱりそうでした(--#
XMLsimplexml_load_fileが読み取って、指定したファイルの中の整形式 XML ドキュメントをオブジェクトに変換します。その際、&を&に変換してくれるんですねぇ〜。


親切!
けどちょっと余計なお世話orz


せめて一言声をかけてからやってください(無理か)。
よもやと思ってprint_rしてみたらやっぱりそうなのでびっくりしましたよ。


HTMLScrapingに同梱されている)HTMLParser.classの _escapeCharsというユーザー定義関数


もう一度置換をかけることにしました。
何かもう少しいい手があるといいですねぇ