
お世話になります。
いまPHPの勉強がてら、趣味も兼ねてウェブサイトを製作しています。
そのなかでパーサーを利用してxmlファイルから情報を取得してサイトに表示させるようにしようとしているのですが、下記のURLのものだけうまくいきません。
http://blog.nicovideo.jp/nicolumn2/atom.xml
パーサーが吐き出したエラーは『変な文字が含まれている』というものだったので、エラーの場所を見つけた後に上記のファイルをブラウザ(GoogleCrome)で見てみると、下記のようなエラーがブラウザに表示されていました。
This page contains the following errors:
error on line 422 at column 12: Input is not proper UTF-8, indicate encoding !
Bytes: 0x1C 0xEF 0xBD 0x9E
Below is a rendering of the page up to the first error.
色々と検索した結果、xmlの受信側ではなく送信側の問題だと考えていますが、このxmlファイルから正常に情報を取得できるサイトがあるので、何らかの方法でこのエラーをクリアできると思い、修正を試みたものの、すべてうまくいきません。
そこで質問なのですが、以下の2点になります。
(1)
パーサーがエラーを吐く原因は『送信されてくるxmlに不正な文字列が含まれており、エラーが出力されるのは送信側の問題である』という僕の解釈は問題ないでしょうか?
(2)
自分の製作したウェブサイトにこのxmlファイルから正常に情報を取得し表示させる方法はありますでしょうか?
よろしくお願いします。
※
・利用しているパーサーはmagpierssです。
・上記xmlファイルから正常に情報を取得しているサイトはgoogleが提供しているサイトです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
(1)
その解釈で恐らく問題ないと思います。MagpieRSSは、内部で、PHPの標準関数である、xml_parse関数などを用いていて、
その関数が、不正な文字を見つけるとエラーでこけるのだと思います。
(2)
xml_parseに渡す前段階で、不正な文字を消したりする処理が必要になるかと思います。
http://dozo.matrix.jp/pear/index.php?PHP/Liblary …
こちらの記事(別のPHPの組み込みクラスでの話ですが)のように、文字コードを変更して戻したり、うまいことやらないと取得出来ないと思いますが、他者が作成したプログラムに対して追加処理を自前でかけるのは結構面倒です。
他所で、正常に取得できているサイトは、別のライブラリを使っていたり、Magpieのような組み込みのxml_parseやSimpleXML以外の、
Pear::XML_Unserializerのような、XMLをXMLとして通すのではなくて、文字列として、上から順番にガリガリ読み解くようなライブラリを使っているのかもしれません。
ちなみに、Pear::XML_RSSというRSS取得のためのライブラリもあるようです。
http://pear.php.net/manual/ja/package.xml.xml-rs …
一度別のRSSリーダーとか、探してみても良いかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Warning: Invalid argument sup...
-
imagecreatefromjpeg使用時のメ...
-
ある条件に当てはまったときに...
-
PHP8を使うと、大量のWarningが...
-
urlの直接入力を防ぐには
-
フォントの色を変えるには?
-
phpの質問です
-
PHPでfatal errorが出ても無視...
-
phpのrenameでエラーが出ます
-
VB6 テキストとSetfocus
-
Localeクラスについて
-
PHPでクラス内のpublicでエラー...
-
502 Bad Gatewayの解決方法
-
phpのheader("Location:#pos")...
-
*.php、*.php3、*.phtmlの違い
-
データ送信をボタンを押さずに...
-
拡張子php画像をjpg画像等に変...
-
zip圧縮の種類について
-
asp.netのクラスについて
-
PHP プルダウンからの選択 ペ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[php初心者]サイトを見てデータ...
-
PHP8を使うと、大量のWarningが...
-
フォントの色を変えるには?
-
PHPで、エラーがない場合のみ画...
-
ワードプレスサイト PHP8.0.25...
-
トランザクションが原因?DBに...
-
PHPでSMTPを使ってメール送信で...
-
「@$変数」の「@の意味は?」
-
あらゆる例外に対応できるエラ...
-
PHPでネットワークドライブのop...
-
正規表現での最後尾のバックス...
-
phpのIF条件分岐で、代入する値...
-
qmailによるメールの受信について
-
PHPにて外部サイト内容が取得不...
-
phpでこの記述をもっと簡単に書...
-
bindValueエラー
-
Bootstrap3 と Faundation5 を...
-
PHPエラーチェック:ローカルで...
-
PHPでfatal errorが出ても無視...
-
AptanaStudioでASP形式のPHPシ...
おすすめ情報