• ベストアンサー

フォームメールで空白を含んだメールを受信したい

初心者です。 下記のような形でメールを受信する場合に、 変数と変数の間に全角の空白を入れたいのですが、 どうすればよいのでしょうか?教えてください! $mail_data2 = <<END; 電話番号:$phone お届け先名:$namae 郵便番号:$post 住所:$pref$address[ここに全角の空白を入れたい]$saddress END

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

全角空白のシフトJISでの文字コードは 0x81 0x40 なのですが、2バイト目の 0x40 は @ の文字コードでもあります。それが後ろの $saddress とくっついているため @$saddress と認識されてしまい、エラーとなるのです。 ※シフトJISの全角文字には、このような2バイト目にアスキー文字のコードを含むものが多数あり、それによって予期せぬエラーを引き起こすことが多々あります。 ※ @$saddress というのは、$saddress が持っている配列データを取り出す時に使う表記で、ここでは $saddress が単なる文字列データであるためにエラーとなります。上級者向けの内容なので、詳細は割愛します。 これを解決する手段はいくつかあるのですが、初心者ということですので「文字コードを変える」のが一番簡単で間違いがないでしょう。EUC や UTF-8 などにするだけで、シフトJISに起因する他の問題も回避できるのでオススメです。 シフトJISを使う必要がある場合は、全角空白の代わりに \x81\x40 と直接コードを指定するか、予め $sp = ' '; などとしておいて $sp を表示するとよいでしょう。

yufu99
質問者

お礼

ありがとうございます。 でも初心者ゆえ、アドバイスを実行に移せません・・・

その他の回答 (3)

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.4

> でも初心者ゆえ、アドバイスを実行に移せません・・・ どこでつまづいているのですか? 文字コードを変える方法ですか? \x81\x40 の方法は試しましたか? $sp の方はどうでしょうか? と、何かしら状況を書いてくれないと、質問攻めになってしまいます^^; とりあえず $address\x81\x40$saddress として試してみてください。

yufu99
質問者

お礼

ありがとうございます。先ほど解決しました。 $kuhaku=' ';と設定して $address$kuhaku$saddress としました。

  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

その形でやるとエラーになるのでしょうか? 現状を教えていただけると答えやすいです。 もしかして、$address[~ の部分が配列だと見なされてしまう、という意味かな?? もしそうなら、 $address\[全角空白\]$saddress と書くか、“[”も全角で書いてしまうとか。

yufu99
質問者

お礼

ありがとうございます。 すみません。説明が悪かったです。 “[”は特に必要ありません。 $address全角空白$saddress としたいのです。\全角空白\を試しましたがダメでした

  • 2NN
  • ベストアンサー率40% (143/353)
回答No.1

普通に全角スペースを入れると文字化けか何か問題が起きます? $addressを${address}にすればいいのかな、、。 $pref${address} $saddress 自信ないですが。

yufu99
質問者

お礼

ありがとうございます。 でもだめでした

関連するQ&A