![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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」が表示されてしまいます。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
等幅フォントでの表示が仮定できるなら、
"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";
}
何か他の方法をご存知の方は、おられませんか?
No.4
- 回答日時:
んー?特に問題ないはずなんですが・・・。
$messageをechoしたらどうなります?
>エラーになりPHPファイルが実行されない
ということはエラーメッセージ吐いてますよね。
もしかして、メールの送信でこけたって事でしょうか。
この回答への補足
yasagure-kunさん
ご回答ありがとうございました。
少し時間をかけて自分でコードをいろいろいじってみる必要がありそうです。
数日下さい。
>$messageをechoしたらどうなります?
やってみます。お時間下さい。
yasagure-kunさん
ご回答ありがとうございました。
検証した結果、yasagure-kunさんがおっしゃるように半角スペースで文字を揃えることができました(等幅フォントと仮定して)。
PHPのエラーは、別の関係のない箇所で起こっていました。
No.3
- 回答日時:
目的がちょっと分からないのですが、文字埋めは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
// '%-' -> '%#' だったかな
No.2
- 回答日時:
この場合、半角スペースでエラーがでる事はないと思うんですけど・・・。
わたしもスペースで調整してますし。
PHPがなんかエラーはいてません?エラーを書いていただいた方がいいかもです。
とは言いつつ、等幅フォントでないとスペースでの調整は意味がないので、
あまり神経質にならない方がいいのではないでしょうか。
この回答への補足
yasagure-kunさん
ご回答ありがとうございました。
例(問題あり)
message.=" TEST10:$test10\n";
上記のように文字列を囲む開始用ダブルクオーテーション「"」の直ぐ後にスペースを挿入した場合にエラーになりPHPファイルが実行されないのですが、そうなりませんか?
例(問題なし)
message.="TEST 10:$test10\n";
開始用ダブルクオーテーション「"」の直ぐ後ではなく、文字と文字の間にスペースを挿入する分には問題ないみたいです。
>PHPがなんかエラーはいてません?
特にこれといって理由が特定できるエラーは、出ていません。
>等幅フォントでないとスペースでの調整は意味がないので
等幅フォントであるという前提で結構です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- Excel(エクセル) Excelの置換が上手くいかない Microsoft® Excel® 2019 MSO (バージョン 5 2022/08/17 22:26
- ドライブ・ストレージ HDDのチェック方法 6 2022/05/04 09:49
- JavaScript [再掲]指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードについて 1 2023/05/10 15:09
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- その他(学校・勉強) Japanese schools tests 1 2022/08/19 14:41
- 中学校受験 Japanese schools 1 2022/08/22 15:53
- PHP $_SESSIONについて教えて下さい。 2 2023/03/02 09:18
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA コレクションに2次元配列...
-
classの再定義エラーについて
-
可変変数にアロー演算子を使いたい
-
PHPの変数値をリンクさせたい
-
関数の動きと記述方法の意味を...
-
PHPで、相対的な変数名の場合の...
-
サブネットマスクを用いたIP制...
-
Fatal error: Cannot use []
-
VB.NETからVBAマクロ(引数)を呼...
-
デフォルトの定義済みクラスに...
-
共用体のサイズをsizeofで
-
【Objective-c】rubyの__send__...
-
既存関数の上書き
-
VB6のコンボボックスのテキスト...
-
PHPプログラム上で「URLを直接...
-
PHP Catchable fatal error の...
-
PHP、ヒアドキュメント内でのIF...
-
メール本文の構成 行頭空白
-
Dosブロンプトでtabを出力したい
-
wordの差し込み印刷で文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA コレクションに2次元配列...
-
エラーの理由が分りません。Pri...
-
可変変数にアロー演算子を使いたい
-
VB.NETからVBAマクロ(引数)を呼...
-
PHP、ヒアドキュメント内でのIF...
-
VB.NETSystem.Xml 要素数を得る...
-
どういうプログラムを関数化を...
-
vb作成したらでbeep音が鳴りま...
-
次のhtml・cssでspan内の文字を...
-
classの再定義エラーについて
-
既存関数の上書き
-
protectedなのにアクセスできな...
-
配列の操作時にLNK2001外部シン...
-
UNIX CP "で上書きしません"
-
PHPでの画像の形式の変換
-
PHPプログラム上で「URLを直接...
-
Let's Encryptで自動更新がされ...
-
ExcelVBAで部分一致(*)をしたい
-
VB6のコンボボックスのテキスト...
-
ASPのResponse.WriteをPHPでは...
おすすめ情報