• ベストアンサー

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

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

  • Perl
  • 回答数4
  • ありがとう数5

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

  • ベストアンサー
  • 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

  • メールの署名で一行空白となるのはなぜ?

    Windows mailを使用しています。 署名作成時はちゃんと続いた行ででているのですが、実際のメールを送信した後でみると、3行目と4行目の間が空白となっているのです。 (郵便番号、住所、氏名のあとに空白、そのあとに電話番号、メルアドとなっています) なぜでしょうか。 どうしたら空白をなくせるでしょうか。 よろしくお願いします。

  • 確認のメールアドレスの比較の方法

    フォームメールなどで、メールアドレスを入力違いを防ぐため、2回入力させ、違う場合はエラーメッセージを表示させたいのですが、どのように 記述すればよいでしょうか? ちなみに今使っているのでは、以下のような形で入力項目をチェックしています。どうぞよろしくお願いします。 if ($namae eq "") { &error("名前が入力されていません");} if ($post eq "") { &error("郵便番号が入力されていません");} if ($pref eq "") { &error("県名が入力されていません");} if ($address eq "") { &error("住所が入力されていません");} if ($phone eq "") { &error("電話番号が入力されていません");} if ($phone!~ /^\d{2,5}-\d{1,4}-\d{4}$/) { &error("電話番号は半角数字でハイフォンで区切って入力して下さい"); } if ($email eq "") { &error("メールアドレスが入力されていません");} if ($email =~ /\s|\,/) { &error("メールアドレスの入力が不正です");} if ($email !~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/) { &error("メールアドレスは半角で正しくご入力ください");} #if ($email !~ /(.+)\@(.+)\.(.+)/) { &error("メールアドレスの入力が不正です");}

    • ベストアンサー
    • Perl
  • QL-800

    QL-800で郵便物に貼る宛名をエクセルからデータを取り込んで印刷する方法を教えて下さい。 印刷したい内容は、 「自分の名前」「自分の郵便番号」「自分の住所」「お届け先郵便番号」「お届け先氏名」「お届け先敬称」「お届け先住所1行目」「お届け先住所2行目」「お届け先住所3行目」「お届け先住所4行目」「内容品」です。 ※OKWAVEより補足:「ブラザー製品」についての質問です。

  • メールの受信内容の揃え方

    PHPで問い合わせフォームを作成して、その内容を メールで送信する、というソースを作成しています。 ステップとして、 1)まず問い合わせフォームに氏名や住所、質問事項を登録してもらう。 2)次にその内容を確認するフォームへ飛ぶ。 3)最後に確認したデータを「有難うございました」で終わる 2から3の過程で、登録の内容を全てメールに自動送信させているのですが、受信したメールは上手い具合に揃えられません。 改行するようにはしていないのに改行されたりします。 【ご自宅電話番号】               0xxx-               8x-               xxx2 のような感じです(ちなみにxxには数字がちゃんと入ります) メール送信自体はきちんと出来ているので、構文に誤りは無いのかな とは思われますが、どうしてもきちんと出来ません。 最後のメールの内容のソースは $msg="【ご自宅電話番号】".$_POST["jitakutel1"]."-".$_POST["jitakutel2"]."-".$_POST["jitakutel3"]."\n"; です。何か解決策がありましたら教えてください。お願いします。

    • ベストアンサー
    • PHP
  • フォームから値を受け取る方法について

    例えば <form method="post" name="frm" action="mail.php">名前<input type="text" name="namae"><br> 住所<input type="text" name="jyuusyo"><br> 電話番号<input type="text" name="denwa"><br> 職業<input type="text" name="syokugyou"><br> 年齢<input type="text" name="nenrei"><br> <input type="submit" value="送信"><br> </form> というフォームがあるとして、それをmail.phpで 名前を取得する場合$_POST['namae']と書く以外で フォームの1番目の値を取得するというような書き方はあるのでしょうか? frmのパラメータの数(上記の場合5コ)というのは取得出来るのでしょうか? ご存知の方教えてください。お願いします。

    • ベストアンサー
    • PHP
  • メールフォームについての質問です。

    PHP初心者です。 メールフォームを作成しているのですが、入力画面と確認画面はできているのですが、送信完了の画面で苦戦しています。入力内容を送信先へ反映させたいのですが、うまくいきません。 ちなみにXAMPP、qdmailを使っています。 詳しい方、どのあたりに問題があるのか教えてください。 以下、ソースです。 <?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//ja" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Language" content="ja"> <title>送信完了しました。</title> </head> <body> <h1>送信完了しました。</h1> <?php include_once('qdmail.php'); // mb_Language("japanese"); mb_internal_encoding("utf-8"); print_r($_POST); if(!empty($_POST['mail'])){ $to=$_POST['mail']; $subject=$_POST['sub']; $name=$_POST['name']; $ruby=$_POST['ruby']; $zip=$_POST['zip']; $address=$_POST['address']; $telephone=$_POST['telephone']; $mail=$_POST['mail']; $question=$_POST['question']; } // $zip=mb_convert_kana($_POST['zip'],'a','utf-8'); if(!preg_match("/\A\d{3}\-\d{4}\z/",$zip)){ $zip="正しい郵便番号を入力してください"; } // $param = array( 'host'=>'??????', 'port'=> 587 , 'from'=>'return_path_address@example.com', 'protocol'=>'SMTP_AUTH', 'user'=>'????@????????', 'pass' => '????????', ); $to = array( '???@?????????' , '宛先日本語名' ); $from = array( 'from@example.com' , '送り元日本語名' ); $subject = 'メールのテスト(テキスト)'; $body = $name."\n".$ruby."\n".$zip."\n".$mail."\n".$address."\n".$telephone."\n".$mail."\n".$question; $option = array('type'=>'text','smtp'=>$param); $flag = qd_send_mail($option , $to , $subject , $body , $from); //$success=mb_send_mail($to,$sub,"名前:".$name."フリガナ:".$ruby."郵便番号:".$zip." 住所:".$address." TEL:".$telephone." ご質問等:".$question."from:".$from); if($flag){ echo('送信しました'); } else{ echo('送信失敗!!'); } ?> </body> </html>

    • 締切済み
    • PHP
  • Webフォームにおける数字入力時の半角・全角について

    Webフォームで住所などを入力する時に 数字入力のところで、 ●電話番号は半角 ●住所の番地は全角 ●郵便番号は半角 となっているサイトって結構ありますよね。 正しい数字を入れているにもかかわらず、 上記の「半角・全角」の決まりを守らないと エラーになって再入力させられます。 すごくややこしいんですが、 なぜこのようになってるのでしょうか? 不親切な仕様ですよね 例えば、このようには出来ないのでしょうか?↓ ●電話番号も住所の番地も半角(または全角) に統一する。もしくは ●半角でも全角でもどちらでも良い 上記どちらかには出来ないものなのでしょうか? 上記を実現するには、プログラムの実装が難しいんでしょうか? もちろん、上記を実現していて、わかりやすいユーザインターフェースのサイトも あるにはあると思いますが。

  • 受信したメールの印刷ができない

    受付番号100388008です。EP-880ABを使用しています。 前にはできていたのですが、受信したメールの印刷が急にできなくなりました。メールの内容部分が空白になって印刷されてきます。  どのようにしたらメールの内容部分が印刷できるようになりますか? ※OKWAVEより補足:「EPSON社製品」についての質問です。

  • クリックポストが届かない

    クリックポストが配達済みになっているのに届きません。 追跡を見ると7月1日に最寄りの郵便局から「お届け先にお届け済み」となっていますが2日の夜と昨日ポストを確認しても何も入っていませんでした。 お届け先にお届け済みというのはポストにはちゃんと投函されたということですよね? そしたら同じマンションの誰かがポストからはみ出たのを取って行ったのでしょうか? たまに郵便受けに縦に入れててはみ出た状態で郵便物が届くこともたまにあります。(鍵付きですがはみ出てるやつはそのまま取れます。) 横に入れればちゃんとポストに入るものを縦にはみ出るように入れる郵便局員もどうなのでしょうか? クリックポストの配達はバイトの方がやっているのですか? とりあえず明日郵便物に問い合わせますが、クリックポストで発送したことと追跡番号の他に何が聞かれるかわかりますか? またこのまま紛失の場合は保証などはあるのでしょうか?

  • 最速何日後に新しい住所に郵便物が届くのでしょうか?

    http://www.post.japanpost.jp/service/tenkyo/ これで郵便物の届け先を変更しようと思うのですが、 ネットで変更の処理をした場合、最速何日後に新しい住所に郵便物が届くのでしょうか?