PHPで文字列を扱うための4つの方法
2. ダブルクォート(")で囲う
次はダブルクォートを使う方法です。シングルクォートよりも、いろいろなことができます。2つのダブルクォートで囲まれた部分が文字列になります。
echo <span style="color:red;">"</span>誕生日おめでとう!<span style="color:red;">"</span>
誕生日おめでとう!
ダブルクォートの中では、シングルクォートをそのまま使うことができます。
echo "Merry X<span style="color:red;">'</span>mas!";
Merry X<span style="color:red;">'</span>mas!
ダブルクォートの中でダブルクォートを使うには、エスケープ文字が必要です。
echo "<a href=<span style="color:red;">\"</span>#<span style="color:red;">\"</span>>リンク</a>";
<a href=<span style="color:red;">"</span>#<span style="color:red;">"</span>>リンク</a>
代わりに、シングルクォートの中ではダブルクォートをそのまま使えます。
echo '<a href=<span style="color:red;">"</span>#<span style="color:red;">"</span>>リンク</a>';
<a href=<span style="color:red;">"</span>#<span style="color:red;">"</span>>リンク</a>
バックスラッシュの書き方はシングルクォートと同じです。
echo "<span style="color:red;">\\</span>(^_^)/";
<span style="color:red;">\</span>(^_^)/
ダブルクォートの中では他にもいくつかの特殊文字を使えます。もっともよく使うのは、改行記号「\n」です。
echo "<h1>徒然日記</h1><span style="color:red;">\n</span><p>日々のことをいろいろ書いています。</p><span style="color:red;">\n</span>";
<h1>徒然日記</h1><span style="background:#fdc;">↵</span>
<p>日々のことをいろいろ書いています。</p><span style="background:#fdc;">↵</span>
シングルクォートの場合は改行記号を使えないので、そのまま「\n」と出力されます。
echo '<h1>徒然日記</h1><span style="color:red;">\n</span><p>日々のことをいろいろ書いています。</p><span style="color:red;">\n</span>';
<h1>徒然日記</h1><span style="color:red;">\n</span><p>日々のことをいろいろ書いています。</p><span style="color:red;">\n</span>
タブ記号は「\t」です。
echo "1<span style="color:red;">\t</span>2<span style="color:red;">\t</span>インデント";
1<span style="background:#cdf;"> </span>2<span style="background:#cdf;"> </span>インデント
ダブルクォートの中では、ドル記号($)にもエスケープ文字を付けます。
echo "そのスマートフォンの値段は、<span style="color:red;">\$</span>100です。";
そのスマートフォンの値段は、<span style="color:red;">$</span>100です。
シングルクォートの場合、ドル記号はそのままドル記号として扱いますが、ダブルクォートの場合は、ドル記号($)を変数の始まりだと解釈するので、エスケープ文字が必要なのです。変数とは、中に値を入れておく入れ物です。PHPの変数は、ドル記号から始まる英数字という決まりがあります。
// 変数 $hello に「こんにちは」と入れておきます。
$hello = 'こんにちは';
echo <span style="color:red;">'</span>みなさん、<span style="color:red;">$hello</span>!<span style="color:red;">'</span>;
echo <span style="color:red;">"</span>みなさん、<span style="color:red;">$hello</span>!<span style="color:red;">"</span>;
みなさん、<span style="color:red;">$hello</span>!
みなさん、<span style="color:red;">こんにちは</span>!
ダブルクォートの方は、変数の名前「$hello」ではなく、変数の中身「こんにちは」が出力されました。変数名の後ろがアルファベットなどで、どこまでが変数なのか区切りがつけられない場合は、波カッコを使います。
$length = 155;
echo "身長は<span style="color:red;">{$length}</span>cmです。";
身長は155cmです。
シングルクォートでも変数の中身を出力したい場合は、シングルクォートの外に変数を書きます。
echo 'みなさん、';
echo $hello;
echo '!';
何度も echo を書くのは面倒なので、結合演算子(.)を使って文をつなげることもできます。
echo 'みなさん、' <span style="color:red;">.</span> $hello <span style="color:red;">.</span> '!';
3. ヒアドキュメントを使う
何行にも渡る文字列を出力したり、保存したりしたい場合に、ヒアドキュメントを使うことがあります。ヒアドキュメントでは文字列を好きなIDで囲います。
ヒアドキュメントのIDには英数字とアンダースコアが使えますが、最初の一文字に数字は使えません。ヒアドキュメントを開始するIDは
$hello = 'こんにちは';
echo <span style="color:red;"><<<SAMPLE</span>
ヒアドキュメントではシングルクォート(<span style="color:red;">'</span>)もダブルクォート(<span style="color:red;">"</span>)もそのまま書けます。
その他の挙動はダブルクォートの場合と同じです。
行が変わると改行されます。
改行記号の「<span style="color:red;">\\n</span>」を書いても改行されます。ここに→<span style="color:red;">\n</span>←改行記号があります。
"<span style="color:red;">\$hello</span>" と書くと、変数の中身が "<span style="color:red;">$hello</span>" と表示されます。
<span style="color:red;">SAMPLE</span>;
ヒアドキュメントではシングルクォート(<span style="color:red;">'</span>)もダブルクォート(<span style="color:red;">"</span>)もそのまま書けます。
その他の挙動はダブルクォートの場合と同じです。
行が変わると改行されます。
改行記号の「<span style="color:red;">\n</span>」を書いても改行されます。ここに→
←改行記号があります。
"<span style="color:red;">$hello</span>" と書くと、変数の中身が "<span style="color:red;">こんにちは</span>" と表示されます。
あまり使う機会はないと思いますが、連結演算子(.)でヒアドキュメント同士を連結したりもできます。
echo <span style="color:red;"><<<SAMPLE</span>
(*^0^)/
<span style="color:red;">SAMPLE</span>
<span style="color:red;">. <<<SAMPLE</span>
\(^0^*)
<span style="color:red;">SAMPLE</span>;
(*^0^)/\(^0^*)
4. Nowdocを使う(PHP5.3.0以降)
ヒアドキュメントの文字列はダブルクォートで囲った文字列と同じ挙動ですが、Nowdocの文字列はシングルクォートと同じです。ヒアドキュメントと同じようにIDを使いますが、Nowdocを開始するIDをシングルクォートで囲います。
echo <span style="color:red;"><<<'SAMPLE'</span>
Nowdocではシングルクォート(<span style="color:red;">'</span>)もダブルクォート(<span style="color:red;">"</span>)もそのまま書けます。
その他の挙動はシングルクォートの場合と同じです。
行が変わると改行されます。
改行記号の「<span style="color:red;">\\n</span>」を書いても改行されません。ここに→<span style="color:red;">\n</span>←改行記号があります。
"<span style="color:red;">$hello</span>" と書いても変数の中身は表示されず、そのまま "<span style="color:red;">$hello</span>" となります。
<span style="color:red;">SAMPLE</span>;
Nowdocではシングルクォート(<span style="color:red;">'</span>)もダブルクォート(<span style="color:red;">"</span>)もそのまま書けます。
その他の挙動はシングルクォートの場合と同じです。
行が変わると改行されます。
改行記号の「<span style="color:red;">\n</span>」を書いても改行されません。ここに→<span style="color:red;">\n</span>←改行記号があります。
"<span style="color:red;">$hello</span>" と書いても変数の中身は表示されず、そのまま "<span style="color:red;">$hello</span>" となります。