![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
フォームからの書き込みをメールで受け取る際に、
お名前 ○○ ○子
ご住所 東京都○○…
お電話番号 01-2345-6789
メッセージ ×××××…
となるのを以下のように行が揃うようにしたいです。
お名前 ○○ ○子
ご住所 東京都○○…
お電話番号 01-2345-6789
メッセージ ×××××…
項目欄であるname="xxx"の文字数字バラバラなので、
その後に続くvalue="yyy"の頭がうまく揃いません。
テーブルは使いたくないのですが、
何か他に方法はありますか?
\tを入れてみたりしたのだけど、ダメでした。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
valueを配置する位置を決めて、keyの不足部分に半角スペースを補うとか。
$value_point = 20;
foreach $key ( keys( %in ) ) {
while ( length( $key ) <= $value_point ) {
$key = "$key ";
}
}
こんな感じなんでしょうけど、なんだかスマートじゃないですねぇ。
# $value_point はバイト数です。
再びありがとうございます。
この方法、私も考えてやってみたのです。
でも、私の方法ではダメでした…(がっかり)
こういう風にやるんですね。
今この方法でやりかけなので、
明日、アドバイスを参考にもう一度やってみようと思います。
No.5
- 回答日時:
#3の続きです。
ハッシュを使ってやる場合、
%in = ("name" => "Momo","address" => "Osaka",
"tel" => "06-****-****","message" => "TEST");
format FILE =
@<<<<<<<<<<@<<<<<<<<<<<
$key $val
.
open (FILE,">test.txt") or die;
while (($key,$val) = each %in){
write FILE;
}
close FILE;
でもいいですし、
項目の順番を気にするなら、
ハッシュを配列に代入してから、
@all = ("name,$in{'name'}","address,$in{'address'}",
"tel,$in{'tel'}","message,$in{'message'}");
format FILE =
@<<<<<<<<<<@<<<<<<<<<<<
$key $val
.
open (FILE,">test.txt") or die;
foreach (@all){
($key,$val) = split (/,/);
write FILE if($val);
}
close FILE;
とやるのもいいと思います。
ありがとうございます。
フォーマットとかハッシュとか全く分からず、
回答者さんにお答えいただいた内容も理解できずにいたので、
今日、いろんなサイトを見て回りました。
自分がいじっているスクリプトと回答頂いた分と、
説明が書いてあるサイトを見比べながら、少しずついじっています。
元にあるスクリプトがちょっぴり複雑で、
書いて頂いたスクリプトをどこにどう入れ込めばいいのか
分からなかったのです。
まだいじっている最中で、出来上がってはいないのだけど、
何とかなりそうな予感がします。
こんなに頭を使ったのは久しぶりで、くたくたです(笑)
本当にどうもありがとうございました。
No.4
- 回答日時:
すみません、No.3さんにです。
あー、懐かしいというか、そういうのありましたね。
すっかり忘れていました。
う~む、素晴らしい・・・
あ、「う~む、素晴らしい…」ってことは、
#3さんの方法で私の問題が解決するってことですね。
しかも素晴らしいってことだから、良い方法なのですね。
下のお礼で、また恥ずかしいことを書いてしまいました。
明日、続きをやってみて、結果をまた報告いたしますね。
私に出来るかな??
気にかけてくださってありがとうございます。
No.3
- 回答日時:
perlならフォーマットを使ったらどうでしょうか。
@all = ("name,Musashi","address,Tokyo",
"tel,03-****-****","message,Hellow!");
format FILE =
@<<<<<<<<<<@<<<<<<<<<<<
$name $value
.
open (FILE,">test.txt") or die;
foreach (@all){
($name,$value) = split (/,/);
write FILE;
}
close FILE;
項目の間隔は <<<<< で調節します。
注)ドット(.)はフォーマットの終りを示します。
<<<<<<
↑こういうのが続くCGIのプログラムって初めて見ました。
フォーマットというのですね。
上のプログラムだと、MusashiとかTokyoとか、
valueの部分がすでに決まっている場合ですよね?
私が取り組んでいるのは、訪問者に書いてもらうフォームで、
名前とか住所とかは、訪問者さんのプロフィールごとに
違ってくるんです。
それでもこの方法でできますか?
まだまだ分からないこと知らないことがたくさんあって、
もっと勉強しなきゃダメですね。
今後の参考にしたいと思います。
ありがとうございました。
No.1
- 回答日時:
項目名の後に必要な分だけ半角スペースを入れればそれでいいと思うのですが、どうでしょう?
HTML メールじゃなければテーブルは使えない(というかソースがそのまま表示される。)と思います。
この回答への補足
ありがとうございます。
補足になりますが、
項目がいくつかあって、
name = &key
value = &value
として書き込みのあった所だけをずら~っと
書き出すようになっているのです。
下手な説明だけど分かりますでしょうか?
メールの本文を書くforeachのその部分を
書き換えればどうにかなるのでは…
と思っているのですが、間違ってます?
かなり大幅に書き換えなければならない、というのであれば、
もう私の手には負えないのですが…
テーブルの件は全くその通りですね。 恥ずかしいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) EXCELの1行を1枚の用紙にそれぞれ印刷したい。 3 2022/10/10 11:35
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Android(アンドロイド) Googleからのメールに対してどう操作するのか? 1 2023/01/08 19:34
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- 観光地・ランドマーク K-ETA申請費用について 2 2022/09/27 14:27
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- 金銭トラブル・債権回収 通販で買う予定の会社の情報が 代表の名前が中国人でした。 心配だったので、 国税庁の法人番号サイトで 2 2023/05/15 12:48
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メモリをアドレスを直接指定し...
-
JSONで文字列が長い時
-
Perlでアルファベットを数...
-
フォームで入力した値を表示し...
-
Application.ScreenUpdating = ...
-
VBAでPDFのコピーとリネームを...
-
実行時エラー 3020の対策
-
formで特定のinputを送信しない...
-
<SELECT>タグの折り返し
-
構造体の各データの表示につい...
-
16進の10進変換について
-
日齢計算プログラム
-
[python] 文字列を変数名として...
-
「*:*」って何を意味するのでし...
-
selectタグ内の特定のoptionの...
-
複数列を持ったリストボックス...
-
テーブル内でドロップダウンメ...
-
my $html<<EOMの意味を教えてく...
-
UWSCのSELECT文の記述方法
-
Perlにおける<?phpinfo();?>の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
【C#】数値の範囲チェックについて
-
Perlでアルファベットを数...
-
途中まで出来ているのですが‥(D...
-
フォームで入力した値を表示し...
-
linq で 楽天ウェブサービスのX...
-
リロード後にプルダウンの選択...
-
CGIからメールに書き出しする際...
-
map(STL)でinsertを行いたいで...
-
半角スペースが有効にならない。
-
CGI(Perl)で、Net::FTPを使いたい
-
iteratorの再利用について
-
Visual Basicで作成したプログ...
-
クリックしたら順番に並び替わ...
-
ラズパイで感圧センサーを動か...
-
デコードできない時があります><
-
パターンマッチで変数でマッチ...
-
gpioを使ってSPIをシミュレーシ...
-
Application.ScreenUpdating = ...
おすすめ情報