- ベストアンサー
HTMLを含まないphpファイルにエンコード形式を記述する必要はある?
- htmlを含まないphpファイルにもエンコード形式を記述する必要があるのか?
- フォームデータの入力、チェック、メール送信の分離したphpファイルのうち、HTMLコードが出力されるのはenter.htmlのみ
- enter.html以外のphpファイルにはエンコード形式を記述する必要があるか
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
結論から言うと、書く必要があります。 PHPがレスポンスを返す場合、何も指定がなければ、 PHPが自動的にhttpヘッダー(HTMLのヘッダー部やmetaタグではない)に "Content-Type:text/html"を付加して送信します。 ブラウザ側はそのhttpヘッダー情報を読み、html文書であると解釈して echoやprintで出力された文字列を表示します。 metaタグもなくHTMLの書式でもない文字列がまともに表示されるのは ブラウザがHTML文書だと解釈して足りない部分を補完してくれる機能があるからです。 文字コードについても同様に(単なる文字列にはエンコード指定がないため) ブラウザが独自に判断して「たぶんこれ」と思う文字コードで解釈します。 httpヘッダーについては自動で付加("Content-Type:text/html"の場合)されるので 意識する必要はありませんが、ユーザー側のブラウザにHTML補完機能や エンコード自動解析の機能が必ず備わっていると期待するべきではありません。 WEB標準(が確立されているかどうか微妙ですが)に準拠したHTML文書を送信するのが無難でしょう。 function html_message( $msg = "" ) { print <<<HERE <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Message</title> </head> <body> $msg </body> </html> HERE; } 私の場合上記のような関数をつかう等しています。
お礼
utano_mさん ご回答ありがとうございました。 良く理解できました。 キャサリン