質問: PHP の simplexml_load_string のエラーがキャッチできない 現在、PHP の simplexml_load_string で、RSSファイルを読み込ませて、 解析するプログラムを作っています。一部、読み込めないRSSがあり、 >Uncaught exception Exception: simplexml_load_string(): Entity: line 1: parser error : >Start tag expected, '<' not found というエラーが出ています。このエラーを判る方法(キャッチする)を教えて下さい。 または、file_get_contents したXML形式のstringを、XML形式なのか?そうでないのか? が 判る方法を教えて下さい。
回答: 例外を出さないんだそうです。 > #### 他パースエラーが発生した場合の原因がわからない > > 上記の制御文字コードをエラーとして試しに出力しようとしたら、 > try catchで例外としてキャッチできなかった。 > どうやら warning エラー。 > 参考:php - How do I handle Warning: SimpleXMLElement::__construct()? - Stack Overflow > set_error_handler を使う。 > > > PHPでのXMLパースエラー出力は必須だね - 今からお前んちこいよ エラーハンドラで例外を投げるようにすると、今 書いているであろうコードがそのまま使えそうです。 php のマニュアルには、こんなことが書いてあります。 > #### エラー / 例外 ¶ > > XML データ内でエラーが見つかるたびに E_WARNING エラーメッセージが発生します。 > > > > ヒント libxml_use_internal_errors() ですべての XML エラーを抑制し、 後から libxml_get_errors() で取得することもできます。 > > > > > > > > PHP: simplexml_load_string - Manual 「ヒント」の部分について、具体的なコードは、マニュアルの libxml_get_errors() に記載があります。 > または、file_get_contents したXML形式のstringを、XML形式なのか?そうでないのか? が > 判る方法を教えて下さい。 > > あくまでも簡易的な方法ですけど、先頭が XML宣言になっているかどうかで判断できます。 先頭の 5byte が "