質問: PHPを使って、簡単なファイルを読み込んで中身を表示させるプログラムを作成したのですが、元々のファイルの先頭にある、 ``` ``` この1行で、 ``` Parse error: syntax error, unexpected T_STRING in /home/greathelp-hp/yokkaichi-alcohol.net/public_html/test/index.html on line 1 ``` このようなエラーになってしまいます。 xmlの記述を無くすと動作しますが、元々のhtmlファイルにあるので、無くしていいんかどうか悩んでいます。 xmlの記述とは一体何なのでしょうか?
回答: HTML5が普及する以前、HTML4を厳格なXMLの書式に修正したXHTMLという規格が策定されました。 XMLでは冒頭にXML宣言が必要とされており、 ``` ``` これがその宣言です。 ご覧のとおり、 ?> は、PHPタグと完全に被ってしまっているので、PHPでパースエラーとなっています。 ですから、PHPでこれを出力する簡単な方法はその部分だけ ``` '; ?> ``` というようにecho文でストリングリテラルとして出力するのが最も簡単です。 > > 簡単なファイルを読み込んで中身を表示させる > > > とのことですが、パースエラーが起きているということはincludeなどでPHPコードとして読み込んでいるということではないでしょうか? file_get_contents()メソッドなどでファイル内容を読み込み、echo文などでその内容を出力すればパースエラーは起きないでしょう。 XHTMLは無駄に厳密すぎたためか、結局すぐに廃れました。SEOの観点からも「これからはXHTMLだ」と一大ブームが巻き起こり、あらゆるWEBサイトのコードがXHTMLで書き換えられ、あちこちで勉強会が開かれたのですが、HTML5の話が出始めるとものすごい勢いで終息していく様は滑稽ですらありました。 旧来のWEBサイトのコードなどに、 ``` ``` などと無駄な記述が見ることができますが、それが当時の名残です。 なお、このような無駄な記述は、現在のHTML5でも許容されています。