【PHP】特殊文字とエスケープシーケンス – 特殊文字を文字列で使用する

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

★ 内容

  • 特殊文字について
  • エスケープシーケンス

特殊文字とは

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

ソースコード

<?php

echo "これ→"はダブルクォーテーションです。";

?>

実行結果

PHP Parse error:  syntax error, unexpected identifier "はダブルクォーテーシ...", expecting "," or ";" in /src/sample.php on line 3

Parse error: syntax error, unexpected identifier "はダブルクォーテーシ...", expecting "," or ";" in /src/sample.php on line 3

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

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

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

エスケープシーケンス

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

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

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

ソースコード

<?php

echo "これ→\"はダブルクォーテーションです。";

?>

実行結果

これ→"はダブルクォーテーションです。

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

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

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

特殊文字の種類

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

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

注意点

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

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

演習問題

問題1

解答例

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

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

実行結果

ダブルクオート "

問題2

解答例

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

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

実行結果

ダブルクオート "
シングルクオート '

まとめ

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