• 締切済み

変数の展開について教えてください。

下記のようにHTMLを出力しているのですが、文字化けのため、 $top_html .= <<"<EXIT>";から$top_html .= <<'<EXIT>';のように シングルコーテションに変更しました。 文字化けは解消されたのですが、$informationが展開されなくなりました。 どのように記述すれば、$informationが展開されるのか教えてください。 $top_html .= <<'<EXIT>'; <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> ・ ・ ・ <html><body> ・ ・ $information ・ ・ ・ </body></html> <EXIT> よろしくお願いします。

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.3

>上記のように直しましたが、何も表示されなくなってしまいます。 下記のコードを実行してみればよいのではないでしょうか。 $information = 'kaori64501'; $top_html .= <<EXIT; <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <html><body> $information </body></html> EXIT print $top_html; 「kaori64501」と表示されないのなら,この11行のコードに問題があるのでしょう。 「kaori64501」と表示されたのなら,質問文のコードをながめていても解決せず,あなたが提示を省略した箇所に問題があるということです。

kaori64501
質問者

お礼

大変参考になりました。HTMLがおかしかったようです。アドバイスありがとうございました。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

うーん・・終端文字列は二重引用符で括っても括らなくても同じ動作だったと記憶してるんですが「何も表示されない」というのはヘンですね。 >スクリプトはEUCでHTMLはSJISで吐き出している phpのように自動的に変換してくれるわけではないですから、大変じゃないですか?何を使って変換されてますでしょうか? リテラルの記述さえ気をつければSJISで書いたほうが面倒がないと思いますが(もれがあってもエラーになるだけだし<ぉぃ)。

kaori64501
質問者

お礼

吐き出すHTMLを再作成したら文字化け解消しました。やっぱり文字化けの原因をつきとめないといけませんよね。アドバイスありがとうございました。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

終端文字列を単引用符で括ると変数は展開されなくなります(仕様です)。 $top_html .= <<EXIT;  :  : EXIT ではダメなんでしょうか? #そもそもの文字化けの原因を探るのが大事だと思いますけど・・。

kaori64501
質問者

お礼

早速の回答ありがとうございます。 上記のように直しましたが、何も表示されなくなってしまいます。 ご指摘とおり、文字化けの原因を探るのがいいと思いますが、 よくわからなくて・・・ 文字化けの文字の後ろに¥マークを挿入したりしたのですが・・・ダメでした。スクリプトはEUCでHTMLはSJISで吐き出しているのですが・・・スクリプトの中でprint "Content-type: text/html; charset=Shift_JIS\n\n";も設定しています。

関連するQ&A