【PHP】simplexml_load_string関数でエラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示されたときの原因と解決策をお伝えします

こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在5社経験している、13年目エンジニアです。

この記事では、simplexml_load_string関数を実行したとき
PHPでsimplexml_load_string関数でエラーメッセージparser error : XML declaration allowed only at the start of the documentが表示されたときの原因と解決策

というエラーメッセージが表示されたときの原因とその解決策をお伝えします。

前提条件:実行環境について

実行環境は以下の通りです。

OS Windows11
PHPのバージョン 8.2.4
XAMPPのバージョン 8.2.4

PHPを動かすためにXAMPPを使っています。
XAMPPのインストールは、下の記事をご参考ください。

エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示される原因

エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示される原因は、xml宣言がドキュメントの先頭で行われていないことが原因です。

以下がエラーの再現プログラムです。

実行すると
PHPでsimplexml_load_string関数でエラーメッセージparser error : XML declaration allowed only at the start of the documentが表示されたときの原因と解決策
とエラーとなります。
xmlをヒアドキュメントで設定していることがポイントです。
ヒアドキュメントとは、特殊な文字列を変数に設定するときに使用する機能です。
詳しくはこちらの記事をご参考ください。

ヒアドキュメントにはタブなどの特殊な文字も設定することができます。
なので

画像の赤枠部分も定義されている、と判断されます。
xml宣言は先頭でしなければならないのにタブが設定されているので、エラーとなっていました。
見やすくするためにタブを入れたのに裏目になってしまった、というわけです。
なので、ヒアドキュメントの定義を修正すれば解決できます。

エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示させないようにする解決策

解決策は、xml宣言はタブなど入れずすぐ定義することです。
例えば先ほど書いたエラー再現プログラムは

↑のように、タブを入れずすぐxml宣言をすればエラーは表示されません。

修正した再現プログラムを実行すると
PHPでsimplexml_load_string関数でエラーメッセージparser error : XML declaration allowed only at the start of the documentが表示されたときの原因と解決策
無事、正常に実行できました。

まとめ:エラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示されたときはxml宣言の前を確認しよう!

以上がエラーメッセージ「parser error : XML declaration allowed only at the start of the document」が表示されたときの原因と解決策でした!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

コメント

タイトルとURLをコピーしました