[php]文字列と変数の連結について

問い合わせフォーム作成のときによく使う。

変数やら文字列を連結するときは「.」で繋ぐ。

$name = '愛新覚羅溥儀';
$message = 'my name is '.$name;
print $message;
//my name is 愛新覚羅溥儀

シングルクオーテーションとダブルクオーテーションは役割が違う。

$msg01 = 'あ\nい';
print = $msg01;
//あ\nい

$msg02 = "あ\nい";
print = $msg02;
//あ(改行)い

シングルクォーテーションで囲ったものは内容の性質を無視してそのまま書き出す。

ということでダブルクオーテーションは割と柔軟で、文字列の中に変数をぶち込むことができる。

$name = '愛新覚羅溥儀';
$message = "my name is {$name}";
print $message;
//my name is 愛新覚羅溥儀

$name = '愛新覚羅溥儀';
$message = 'my name is {$name}';
print $message;
//my name is {$name}

最初に書いた「.」の連結をしなくて済むので手間が省ける。

それぞれにメリットはあるんで、使い分けをするのがいい。メール本文を組み立てるときに関わる話。

//例1
$greeting = '※このメールはシステムからの自動返信です。'."\n\n".'この度はお問い合わせいただきありがとうございます。';
//例2
$greeting = "※このメールはシステムからの自動返信です。

この度はお問い合わせいただきありがとうございます。";
//例3
$greeting = "※このメールはシステムからの自動返信です。\n\nこの度はお問い合わせいただきありがとうございます。";

どれも出力内容は同じ。じゃあどれが見やすいか、手を入れやすいか、そんな感じ。

個人的には1つ目の、極力シングルで区切って要所要所でダブルを使ったり変数を入れたりするのを使ってる。余計なことが起きない気がして。

3つ目のダブルでやっちゃえば中に何でも入れられるわけだけど、めちゃくちゃ長い1行を作るのは無理があるし、ダブルクオーテーション内で改行すると出力したものも改行されるから、どっかで区切らないといかんよなとか。

あとは問い合わせ内容に変な文字列が突っ込まれたときに変な処理が起きたらいやだなって問題なんだけど、htmlspecialcharsやらなにやらでカバーできるしそこまで気にしなくてもいいのかな、とも。

なんかそういう感じ。

コメント

タイトルとURLをコピーしました