PHP:XML の解析を simplexml_load_file() 関数で取得しようとしたらエラーが発生した

PHP で XML データの解析に便利な simplexml_load_file() や simplexml_load_string() ですが、RSS などの解析をしていたときに「PCDATA invalid Char」や「parser error : Char 0x0 out of allowed range」といったエラーに遭遇しました。

その原因と回避策をメモ。

目次

原因

制御コードがデータに混じっているのが原因です。

先ほどのエラーでも、ヌル文字が入ってるよと言われています。

ですので、制御コードは省けば良いのですね。
(出力側がちゃんと管理しろよと思うけれども)

解決したコード

[code lang=’php’] //データは文字列として取得
$s = @file_get_contents($url);

//0x00~0x0f のうち、タブ(0x09)・改行(0x0a)・復帰(0x0c)を除いて削除
$controlCode = array(“\x00”, “\x01”, “\x02”, “\x03”, “\x04”, “\x05”, “\x06”, “\x07”, “\x08”, “\x0b”, “\x0c”, “\x0e”, “\x0f”);
$s = str_replace($controlCode, ”, $s);

//処理した文字列を simplexml 関数に読み込ませる
$xml = simplexml_load_string($s);
[/code]

単純に、いらないコードは空文字に置換するコードです。

今回の問題以外にも、別の文字コードが値や属性値に含まれていたりする可能性も否定できないのが、他サービスに依存する場合に気にかかるところですね。

10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント

【最後まで読んでくれたあなたに】

あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?

私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。

それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。

しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。

そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。

・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!

という方は今すぐ無料でダウンロードしてください。

期間限定で、無料公開しています。

※登録後に表示される利用条件に沿ってご利用ください

PHP:XML の解析を simplexml_load_file() 関数で取得しようとしたらエラーが発生した” に対して1件のコメントがあります。

コメントを残す