エスケープシーケンス

広告

文字列として入力を行えない特殊な文字があります。簡単な例で言えば改行です。Enterキーを押してもテキストが改行されるだけで改行を表す文字としては入力ができません。

このような特殊な文字を入力するために「¥」記号+1文字などを使い別の単語として記述することができます。このような特殊な記述の仕方をエスケープシーケンスと言います。

エスケープシーケンスとして用意されているものには次のようなものがあります。

¥n    改行
¥r    キャリッジリターン
¥t    タブ
¥¥    ¥文字
¥$    $文字
¥(    左括弧
¥)    右括弧
¥[    左括弧
¥]    右括弧
¥'    シングルクオーテーション
¥"    ダブルクオーテーション
¥nnn  8 進数表記
¥xnn  16 進数表記

エスケープシーケンスはダブルクオーテーションで囲まれた文字列の場合にだけ意味を持ちます。例えば次のように使用します。

print "こんにちは¥n";
print "名前は¥"伊藤¥"です";

2番目の例ではダブルクオーテーションで囲まれた文字列の中で、文字としての「"」を使用したい場合の例です。エスケープシーケンスを使わずにそのまま記述すると次のようになります。

print "名前は"伊藤"です";

このように記述してしまうとどこからどこまでが文字列なのか識別できません。その為、ダブルクオーテーションの中で囲まれた文字列の中で「"」を記述する場合はエスケープシーケンスを用いて「"」の代わりに「¥"」と記述します。

このように「¥」は特殊な意味を持つため、「¥」と言う文字そのものを文字列の中で記述するにはエスケープシーケンスを使って「¥¥」と記述します。

なおシングルクオーテーションで囲まれた文字列の中でも次の2つだけはエスケープシーケンスとして扱われます。

¥'    シングルクオーテーション
¥¥    ¥文字

シングルクオーテーションで囲まれた文字列の中で、文字として「'」を記述したい場合はエスケープシーケンスを用いて「'」の代わりに「¥'」と記述します。そして1つだけですが「¥」記号はシングルクオーテーションの中でも特別な意味を持つため「¥」と言う文字そのものを記述するには「¥¥」と記述します。

print '出身地は¥'大阪¥'です';

サンプルプログラム

では簡単なプログラムで試して見ます。

sample4-1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>PHPテスト</title>
</head>
<body>

<p>PHPのテストです。</p>

<p>
<?php
print "私の名前は¥"山田¥"です<br />";
print '私の名前は¥"山田¥"です<br />';
?>
</p>

</body>
</html>

上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

エスケープシーケンス

今回の例では最初の文字列はダブルクオーテーションで囲まれた文字列であるため「¥"」はエスケープシーケンスとして扱われていますが、2つ目の文字列はシングルクオーテーションで囲まれた文字列であるため「¥"」はエスケープシーケンスとして扱われず、そのまま文字として出力が行われています。

( Written by Tatsuo Ikura )