
お世話になります。
いま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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォントの色を変えるには?
-
require_once で読み込まれたか?
-
iframeからのアクセスか、ブラ...
-
gooブログ新着記事をWordPress...
-
E_NOTICEでも処理を止められま...
-
CakePHP で、質問させていただ...
-
HTTPステータスコード
-
画像がうまく取込めない(HTML...
-
$_POST["year"]の”が unexpecte...
-
PHPで特定のURLにジャンプす...
-
ある条件に当てはまったときに...
-
PHPのエラーについて質問です
-
「file_get_contents」で「HTTP...
-
session_startが使えない???
-
PHPで値を出力
-
fsockopenで下層ページの内容を...
-
チェックボックス検索システム
-
Amazon WebサービスのSOAPて使...
-
PHPのPEARのServices_Twitterの...
-
PHPでSQLSERVERのENCRYPTについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの色を変えるには?
-
トランザクションが原因?DBに...
-
PHPでネットワークドライブのop...
-
Localeクラスについて
-
PHPにて外部サイト内容が取得不...
-
PHP8を使うと、大量のWarningが...
-
PHPで、エラーがない場合のみ画...
-
「@$変数」の「@の意味は?」
-
パースエラーとは?
-
require_once で読み込まれたか?
-
PHP.iniの設定に関して
-
SELECTの値を保持する
-
これは例外処理でしょうか?
-
phpのエラー(T_LNUMBER)について
-
ある条件に当てはまったときに...
-
ワードプレスサイト PHP8.0.25...
-
正規表現での最後尾のバックス...
-
PHPでfatal errorが出ても無視...
-
PHPでSMTPを使ってメール送信で...
-
Oracleに接続できません
おすすめ情報