こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、13年目エンジニアです。
この記事では、simplexml_load_string関数を実行したとき
1 |
parser error : Opening and ending tag mismatch |
というエラーメッセージが表示されたときの原因とその解決策をお伝えします。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows11 |
---|---|
PHPのバージョン | 8.2.4 |
XAMPPのバージョン | 8.2.4 |
PHPを動かすためにXAMPPを使っています。
XAMPPのインストールは、下の記事をご参考ください。
エラーメッセージ「parser error : Opening and ending tag mismatch」が表示される原因
エラーメッセージ「parser error : Opening and ending tag mismatch」が表示される原因は、開始と終了のタグが不一致な箇所があることが原因です。
以下がエラーの再現プログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php print('■simplexml_load_string関数確認<br >'); $xml_fruit = <<<EOT <?xml version="1.0" encoding="UTF-8" ?> <fruit> <apple>リンゴ</apple> <banana>バナナ</banana> <orange>オレンジ</orang> </fruit> EOT; $xml = simplexml_load_string($xml_fruit); print_r($xml); ?> |
実行すると
とエラーとなります。
xmlはヒアドキュメントで設定しています。
ヒアドキュメントとは、特殊な文字列を変数に設定するときに使用する機能です。
詳しくはこちらの記事をご参考ください。
エラーメッセージを読んでみると
1 |
orange line 5 and orang |
と記載されています。
orangeの終了タグが「e」が抜けてしまっているため、エラーとなっていました。
開始と終了が不一致な箇所は、エラーメッセージを読みながら確認してください。
エラーメッセージ「parser error : Opening and ending tag mismatch」が表示させないようにする解決策
解決策は、xmlの開始と終了タグを一致させることです。
前章の再現プログラムだと、終了タグの「orang」を「orange」に直せば解決できます。
例えば先ほど書いたエラー再現プログラムは
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php print('■simplexml_load_string関数確認<br >'); $xml_fruit = <<<EOT <?xml version="1.0" encoding="UTF-8" ?> <fruit> <apple>リンゴ</apple> <banana>バナナ</banana> <orange>オレンジ</orange> </fruit> EOT; $xml = simplexml_load_string($xml_fruit); print_r($xml); ?> |
↑のように、開始と終了のタグがすべて一致すればエラーは表示されません。
修正した再現プログラムを実行すると
無事、正常に実行できました。
まとめ:エラーメッセージ「parser error : Opening and ending tag mismatch」が表示されたときはxml宣言の前を確認しよう!
以上がエラーメッセージ「parser error : Opening and ending tag mismatch」が表示されたときの原因と解決策でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント