文字列内で改行させたい場合や ダブルクォーテーションを出力させたい場合など、通常の記述では意図した出力結果が得られない処理を、特殊な文字の組み合わせを記述することで実現することを エスケープ処理と言います。
今回は PHP のエスケープ処理について紹介します。
PHP【文字列】文字列の連結
PHP【文字列】explode で文字列を分割
PHP【文字列】str_replace で文字列を置換
PHP【文字列】文字列の検索
PHP【文字列】文字列の比較
PHP【文字列】substr で文字列の抽出
PHP【文字列】数値に変換
PHP【文字列】strlen で文字列の長さを取得
PHP【文字列】trim で空白を削除
PHP【文字列】sprintf でフォーマット
PHP【文字列】エスケープ処理(本ページ)
本サイトでは XAMPP( ザンプ )という開発環境を使用しています。
XAMPP のインストール方法や起動方法については以下の記事をご参照下さい。
PHP【 開発環境 】XAMPP インストール
PHP【 開発環境 】XAMPP の使い方
なお、未経験からITエンジニアへの就職に興味がある方や未経験からプログラミングを効率よく学びたいと考えている方は、就職率98.3%で受講料無料のプログラミングスクールプログラマカレッジもおすすめです。
最終更新日:2019年6月12日
文字列の開始や終了を意味する引用符の「 ” 」や「 ‘ 」のように普通に記述するだけでは出力されない文字を出力させたり、文字列内で改行させる場合等、意図した通りの出力結果を得るために 特殊な文字の組み合わせを記述することを エスケープ処理といいます。
直後の文字について、通常とは異なる処理をするという意味を持つ文字をエスケープ文字といいます。
エスケープ文字は、プログラム言語や文字の前後関係によって様々ですが、PHP では、バックスラッシュ( \ )や円マーク( ¥ )をエスケープ文字として使用します。
因みにバックスラッシュ( \ )を入力しても円マーク( ¥ )が表示されることがよくあると思いますが、両者は 言語環境やフォントの種類によって表示が異なる同義の文字です。
改行のように 通常の文字列では記述できない特殊な処理や、通常とは異なる出力処理をする目的で組み合わせられた文字の並びをエスケープシーケンスといいます。
例えば、「 ” 」を出力するために エスケープ文字のバックスラッシュ( \ )を使った場合、「 \” 」という文字の組み合わせがエスケープシーケンスとなります。
PHP の文字列内で使用する主なエスケープシーケンスは次の通りです。
( エスケープ文字は円マークでもバックスラッシュでも同様に使用できます。 )
\n | 改行 |
---|---|
\r | キャリッジリターン(カーソルを先頭に戻す。改行を伴うことが多い) |
\t | 水平タブ |
\v | 垂直タブ |
\f | 改ページ |
\’ | シングルクォーテーション( ‘ ) |
\” | ダブルクォーテーション( ” ) |
\¥ | 円マーク( ¥ ) |
\$ | ドルマーク( $ ) |
\nnn | 8 進数 |
\xnn | 16 進数 |
エスケープ処理をした文字列を出力してみます。
下記のようなソースファイルを作成して ブラウザからアクセスすると、次のような表示になります。
( ソースファイルの作成方法についてはソースファイルを作成を、サーバの起動方法等についてはサーバを起動を、それぞれご参照下さい。)
<?php
echo "答えは\"escape\"です。";
echo "<br>";
echo "答えは\'escape\'です。";
echo "<br><br>";
echo '答えは\'escape\'です。';
echo "<br>";
echo '答えは\"escape"です。';
echo "<br><br>";
echo "答えは\tescapeです。";
echo "<br><br>";
echo "答えは\nescapeです。";
?>
「 echo 」は、データを出力するために使用する PHP の命令です。
ダブルクォーテーション( ” )内でシングルクォーテーション( ‘ )を出力させたい場合は、エスケープ処理は不要です。
上のサンプル中の「 echo “答えは\’escape\’です。”; 」をエスケープ処理無しで「 echo “答えは’escape’です。”; 」と記述すると、「 答えは’escape’です。」と出力されます。
シングルクォーテーション( ‘ )内でダブルクォーテーション( ” )を出力させたい場合も同様です。
文字列中にエスケープシーケンス「 \n 」がある場合はその位置で改行され、「 \t 」がある場合はタブ分のスペースが入ります。
INTERNOUS,inc. All rights reserved.