拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
iTunes Store RSSにハマる
とある案件で、「iTunes Store RSSからアプリのランキング情報のXMLを得て、サイトに表示する」という処理を作りました。
その際にハマったことがあったので、紹介します。
PHPでパースするとエラーが出ることがある
今回は、PHPを使ってXMLをパースし、ランキングを出力するようにしました。
XMLのパースには、PHP5標準のDOMDocumentクラスを使いました。
ところが、iTunes Store RSSのXMLをいろいろと試してみると、XMLのパースの際にエラーが発生することがありました。
Ctrl+Sが混入している
XMLを保存してテキストエディタで開き、XML内でエラーになった行をよく見てみると、アプリの要約の文章(summary要素)に、Ctrl+Sコード(文字コード19番)が混入していることが分かりました。
このCtrl+Sのために、PHPが「XMLに不正な文字コードがある」と判断して、エラーを出力していました。
そこで、XMLをパースする前に、正規表現を使ってXMLからCtrl+Sを削除するようにしました。
これで、XMLのパースを正しく行えるようになりました。
iTunes Store RSSの不具合だと思いますので、ぜひApple側で修正していただきたいです。