dポイントプレゼントキャンペーン実施中!

mail('abc@example.com', 'My Subject', $message);
上記の関数(胆略化しています。)で$message部分の構成の仕方に対する質問です。

例:
test1 = "あいう";
test10 = "えおか";
test100 = "きくけ";

$message = "これは、テストです。\n";
if ($test1 !== ""){
$message.="TEST1:$test1\n";
}
if ($test10 !== ""){
$message.="TEST10:$test10\n";
}
if ($test100 !== ""){
$message.="TEST100:$test100\n";
}
上記の例の場合、出力結果は以下のようになります。

<現在の出力結果>
これは、テストです。
TEST1:あいう
TEST10:えおか
TEST100:きくけ
この出力結果では行頭(左詰)で全体がそろえられているので、コロン「:」の位置はコロンより左側の文字の数により、ばらばらです。
この出力結果の各行をコロン「:」でそろえるようにするには、どうしたらよいでしょうか?
(目指す出力結果をこのスレッドに記載しようとしたのですが、教えてgooでは左側のスペースが省略されてしまいだめでした。)

下記の様に「\s」なども使用してみましたが、うまく行きません。
$message = "これは、テストです。\n";
if ($test1 !== ""){
$message.="\s\sTEST1:$test1\n";
}
if ($test10 !== ""){
$message.="\sTEST10:$test10\n";
}
if ($test100 !== ""){
$message.="TEST100:$test100\n";
}
<うまく行かなかった出力結果>
これは、テストです。
\s\sTEST1:あいう
\sTEST10:えおか
TEST100:きくけ
「\s」が表示されてしまいます。

よろしくお願いします。

A 回答 (4件)

等幅フォントでの表示が仮定できるなら、



"TEST1 ;$test"
のように半角スペースの挿入でいけるのでは。

でも、必ずしも、相手側が等幅で表示してくれるとは限らない(HTML形式で表として記述する手もありますが。)ので、あんまり気にしない事をおすすめします。

この回答への補足

osamuyさん
ご回答ありがとうございました。

私も、当初、下記のようにTESTの前に半角スペースを使用してみましたが、エラーになってしまい、プログラムが実行されませんでした。
うまく行かなかった例(半角スペース挿入)
$message = "これは、テストです。\n";
if ($test1 !== ""){
$message.=" TEST1:$test1\n";
}
if ($test10 !== ""){
$message.=" TEST10:$test10\n";
}
if ($test100 !== ""){
$message.="TEST100:$test100\n";
}

何か他の方法をご存知の方は、おられませんか?

補足日時:2007/12/10 12:23
    • good
    • 0

んー?特に問題ないはずなんですが・・・。


$messageをechoしたらどうなります?

>エラーになりPHPファイルが実行されない
ということはエラーメッセージ吐いてますよね。
もしかして、メールの送信でこけたって事でしょうか。

この回答への補足

yasagure-kunさん
ご回答ありがとうございました。

少し時間をかけて自分でコードをいろいろいじってみる必要がありそうです。

数日下さい。

>$messageをechoしたらどうなります?
やってみます。お時間下さい。

補足日時:2007/12/11 20:48
    • good
    • 0
この回答へのお礼

yasagure-kunさん
ご回答ありがとうございました。

検証した結果、yasagure-kunさんがおっしゃるように半角スペースで文字を揃えることができました(等幅フォントと仮定して)。

PHPのエラーは、別の関係のない箇所で起こっていました。

お礼日時:2007/12/14 20:59

目的がちょっと分からないのですが、文字埋めはsprintfが便利かも。



$message = '';
$message .= sprintf('%7s:%s', 'TEST1', 'あいう') . "\n";
$message .= sprintf('%7s:%s', 'TEST10', 'えおか') . "\n";
$message .= sprintf('%7s:%s', 'TEST100', 'きくけ') . "\n";
$message .= sprintf('%-7s:%s', 'TEST1', 'あいう') . "\n";
$message .= sprintf('%-7s:%s', 'TEST10', 'えおか') . "\n";
$message .= sprintf('%-7s:%s', 'TEST100', 'きくけ') . "\n";
echo "<pre>" . $message;

// for win
// '%-' -> '%#' だったかな

この回答への補足

tany180sxさん
ご回答ありがとうございました。

sprintf関数ですか、参考にさせて頂きます。

補足日時:2007/12/11 20:46
    • good
    • 0

この場合、半角スペースでエラーがでる事はないと思うんですけど・・・。


わたしもスペースで調整してますし。
PHPがなんかエラーはいてません?エラーを書いていただいた方がいいかもです。

とは言いつつ、等幅フォントでないとスペースでの調整は意味がないので、
あまり神経質にならない方がいいのではないでしょうか。

この回答への補足

yasagure-kunさん
ご回答ありがとうございました。

例(問題あり)
message.=" TEST10:$test10\n";
上記のように文字列を囲む開始用ダブルクオーテーション「"」の直ぐ後にスペースを挿入した場合にエラーになりPHPファイルが実行されないのですが、そうなりませんか? 

例(問題なし)
message.="TEST 10:$test10\n";
開始用ダブルクオーテーション「"」の直ぐ後ではなく、文字と文字の間にスペースを挿入する分には問題ないみたいです。

>PHPがなんかエラーはいてません?
特にこれといって理由が特定できるエラーは、出ていません。

>等幅フォントでないとスペースでの調整は意味がないので
等幅フォントであるという前提で結構です。

補足日時:2007/12/10 19:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!