ITHACK
~ みんなのIT部門 ~

【PHP】特殊文字とエスケープシーケンス – 文字列で特殊文字を使う方法

文字列では、特殊文字と呼ばれる通常の記述で使えない文字があります。
ここでは特殊文字とその使用方法について解説します。

  • 特殊文字

  • エスケープシーケンス

特殊文字とは

特殊文字とは通常の記述では使えない文字のことです。
例えば、ダブルクオートや改行、タブなどで、何故使えないかを次のコードで確認しましょう。

<?php

echo "これ→"はダブルクオートです。";

?>
PHP Parse error:  syntax error, unexpected identifier "はダブルクオートです。", expecting "," or ";" in sample.php on line 3

Parse error: syntax error, unexpected identifier "はダブルクオートです。", expecting "," or ";" in sample.php on line 3

ダブルクオートの文字列の内容にダブルクオートがあり、実行結果にエラーが出力されています。

エラーの原因は文字列の内容に特殊文字のダブルクオートがあることです。
それによりコンパイル時に文字列の範囲が、これ→までなのかこれ→"はダブルクオートです。までなのかが判定できなくなります。

文字列の内容にダブルクオートのような特殊文字を使用する場合は、エスケープシーケンスと呼ばれる仕組みを使います。

エスケープシーケンス

エスケープシーケンスは特殊文字を回避する仕組みです。

具体的には特殊文字の前にバックスラッシュ(\)を記述します。
※ Windowsの場合は円マーク(¥)をバックスラッシュの代わりに使うことがあります。

上記コードにエスケープシーケンスを適用すると次のようになります。

<?php

echo "これ→\"はダブルクオートです。";

?>
これ→"はダブルクオートです。

文字列の内容のダブルクオートの前にバックスラッシュが付いており、実行結果では『これ→”はダブルクオートです。』と表示されているので、正常に動作していることが分かります。

エスケープシーケンスすることで、『バックスラッシュ+特殊文字』で1文字となり、文字列の内容の文字として扱われます。

そして、バックスラッシュは文字としては認識されないため、出力では表示されません。

特殊文字の種類

ダブルクオート以外にも様々な特殊文字があり、代表的な特殊文字を次の表に示します。

意味 記述
シングルクオート \'
ダブルクオート \"
改行 \n
タブ \t
括弧 \( / \) / \[ / \]

注意点

エスケープシーケンスは基本的にはダブルクオートの文字列で使用します。

シングルクオートの文字列ではシングルクオートとダブルクオートしかエスケープシーケンスできないので注意しましょう。

演習問題

問題1

次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 文字列はダブルクオートを使用
ダブルクオート "

問題2

次の実行結果になるプログラムを作成してください。
なお、下記の条件を満たすものとします。

  • 文字列はダブルクオートを使用
ダブルクオート "
シングルクオート '

まとめ

特殊文字は通常の記述では文字列で使えない文字です。
もし、特殊文字を使用したい場合はエスケープシーケンスを使いましょう。