SimpleXML警告をスローする - どのようにキャッチする?

simplexml_load_string()で何が起こっているのかを判断するのに問題があります。以下のコードを使用してXMLをレンダリングしています。このコードを実行すると、

Message: simplexml_load_string() [function.simplexml-load-string]: Entity: line 94: parser error : Opening and ending tag mismatch: meta line 15 and head

どのように私はこれらの警告をキャッチすることができますか? libxml_get_errors は効果がありません。

                $response = simplexml_load_string($response);
                var_dump($response);
                if (count(libxml_get_errors()) > 0) {
                    print_r(libxml_get_errors());
                }

                if (is_object($response)) { //returns true when warnings are thrown
                    //process response
                } else {
                    //record error
                }
0
追加された 編集された
ビュー: 7
無効な.xmlファイルをロードしています。多分それを提供している人に問題を委譲していますか?
追加された 著者 FailedDev,

2 答え

libxml_use_internal_errors(true);//!!!

$elem = simplexml_load_string($xml);
if($elem !== false)
{
   //Process xml structure here
}
else
{
    foreach(libxml_get_errors() as $error)
    {
        error_log('Error parsing xml file ' . $file . ': ' . $error->message);
    }
}
11
追加された
エラー処理はさらに悪化します。この警告は、エラー処理よりも間違ったXMLソース部分に関するより具体的なメッセージを示します。後者は、XMLソースファイルがウェルフォーマットでコード化されていない場合、エラー部分を特定するのが困難な列のみを表示します。
追加された 著者 Scott Chu,
この回答は警告を妨げるものではなく、エラーの詳細を表示するだけです。警告を防ぐには、この回答のように set_error_handler()を使用してください: stackoverflow.com/a/17012247/204842
追加された 著者 Russell G,

私の状況では、XMLを共有していたサーバーがhttpをhttpsに変更しました。そのため、古いパスのXMLファイルをダウンロードしていましたが、この場合は「破損していました」。だから我々はエラーがあった。

私はhttpsの問題(ブラウザのリダイレクト)に気付かなかったので、XMLファイルが完全にロードされていました。

0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
3 参加者の

招待状へのリンク: https://t.me/joinchat/B2gdSlA_dh1-BQtEKA2dfw このグループではPHPについて話します。 パートナー:kotaeta.com