menu
ホーム > PHPの文法 > 1 基本構造 > PHP 文字列の取り扱い
PHPリファレンス

UPDATE:2019年09月18日

PHP 文字列の取り扱い

PHP 文字列の取り扱い | wepicks!

PHP4 PHP5 PHP7

文字列の扱い簡単まとめ

1 Minute Note

  • 文字列は " (ダブルクォート) ' (シングルクォート) で囲む
  • " (ダブルクォート) は 変数展開される
  • ' (シングルクォート) のエスケープシーケンス
    \' シングルクォート
    \\ バックスラッシュ
  • " (ダブルクォート)のエスケープシーケンス
    \' シングルクォート
    \" ダブルクォート
    \n 改行
    \r 復改
    \t タブ
    \\ バックスラッシュ
    \$ ドル記号
    \{ 左波括弧
    \} 右波括弧
    \[ 左角括弧
    \] 右角括弧
    \0 から \777 8進数形式で表したASCII文字
    \x0 から \xFF 16進数形式で表したASCII文字
PHP では、「 " (ダブルクォート) 」「 ' (シングルクォート) 」で囲むことによって文字列として扱われます。


文字列の取り扱い

POINT

  • 文字列を扱う場合、 "(ダブルクォート) '(シングルクォート) で文字列を囲む
" (ダブルクォート) と ' (シングルクォート) で囲むと文字列扱い

PHPで文字列を扱う場合は「 " (ダブルクォート) 」「 ' (シングルクォート) 」で文字列を囲みます。そうすることでPHPから文字列として処理されます。文字列とは文字が連なったもので単語や文章になるものです。文字列のデータ型は文字列型になります。

簡単な例を見てみましょう。以下の例は「 ' (シングルクォート) 」で囲い文字列として扱っています。

です。
結果は

Hello World!

となります。
echo で「Hello World!」という文字列を表示させています。

例えば

とした場合、
結果は

1+1
2+2

となります。
式が文字列としてそのまま表示されます。1+1は「 " (ダブルクォート) 」、2+2は「 ' (シングルクォート) 」で囲むことで式ではなく文字列として処理されました

それでは次に

とした場合、出力すると計算結果が表示されます。

2
4

となります。
こちらは文字列ではなく式として処理されて式の結果が表示されています

以下の例では条件式が実行され

結果は

TRUE

となります。

条件式を「 " (ダブルクォート) 」で囲むと唯の文字列として扱われ、

結果は

if(1+1 == 2) echo 'TRUE';

となります。
※echo で出力する際「 " (ダブルクォート) 」を利用していることに注意して下さい。

ダブルクォートとシングルクォートの違い

POINT

  • " (ダブルクォート) 」は変数展開される
  • " (ダブルクォート) 」と「 ' (シングルクォート) 」では扱うエスケープ文字列が違う

「 ' (シングルクォート) 」で囲まれた場合も「 " (ダブルクォート) 」で囲まれた場合も文字列として扱われますが、両者には幾つか違いがあります。

「 " (ダブルクォート) 」は変数展開できる

ダブルクォートは変数展開

「 " (ダブルクォート) 」で囲まれた中に変数があると変数箇所が格納されているデータに置き換わります。これを変数展開といいます。「 ' (シングルクォート) 」だと変数は展開されません。

「 " (ダブルクォート) 」で変数を囲むと変数展開され、以下のような結果になります。

実行結果
こんにちは!

となります。

シングルクォートは変数展開なし

「 ' (シングルクォート) 」だと、変数の $greeting がそのまま表示されてしまいます。

実行結果
$greeting

となります。

変数展開の詳細に関しては「PHP の 変数」をご参照下さい。

エスケープ文字列(エスケープシーケンス)とは

エスケープ文字列 特殊な文字や機能を表現
エスケープ文字列 は「\ (バックスラッシュ) 」+1文字 で記述 = エスケープシーケンス

「 " (ダブルクォート) 」と「 ' (シングルクォート) 」では扱えるエスケープ文字列(エスケープシーケンス)が異なります。
エスケープ文字列とは、通常の文字列では表せない特殊な文字や機能を表現するための規定された特別な文字列の並びのことです。エスケープ文字列は、「\ (バックスラッシュ) 」(環境によって円記号で表されます。円記号もバックスラッシュも同じ意です。)に続く1文字で表されます。この文字列をエスケープシーケンスといいます。

例えば、改行を表すエスケープシーケンスは、「\n」で表現できます。「\ (バックスラッシュ) 」+1文字で表現しています。「\n」 はソースコード中に改行を入力しろという指示になります。因みにブラウザ上での改行はHTMLタグの<br/>となります。改行の詳細は「PHP の 改行」を参照下さい。

POINT
「\ (バックスラッシュ) 」(日本語環境では円記号となる場合もある)には、 2つの使用法があります。
-1- ひとつめの使用法は、上記のエスケープシーケンスを作るための使用方法です。「\ (バックスラッシュ) 」(円記号で表されます)に続く1文字で特殊な機能を持つエスケープシーケンスを作成します。下記表を確認下さい。
-2- もう一つは、非英数字の前に記述する場合で、続く文字が表す特別な意味を取り去る、エスケープ文字としての使用方法です。 「\ (バックスラッシュ) 」に続く文字をそのままの文字として扱えるようにします。このエスケープ文字としての使用法は、 正規表現の文字クラスの内部でも外部でも、いずれでも可能です。
例えば

「Tom's」のシングルクォート「'」を意味を持たない文字列にするため「'」の前に「\ (バックスラッシュ) 」を配置しています。
出力すると[ This is Tom's pen. ]となります。「Tom\'s」にバックスラッシュが配置されず「Tom's」とした場合、「Tom'」で文字列が終了することになり、後に続く「s pen.';」が意味をなさないコードになり、エラーが発生してしまいます。

「 " (ダブルクォート) 」で扱えるエスケープシーケンス

エスケープシーケンス (escape sequence) とは、コンピュータシステムにおいて、通常の文字列では表せない特殊な文字や機能を表現する、規定された特別な文字列のことです。

エスケープシーケンス(エスケープ文字列)
エスケープ文字(「\ (バックスラッシュ) 」(円記号で表されます))+1文字
そのシーケンスが表す文字
\"ダブルクォート
\n改行
\r復改
\tタブ
\\バックスラッシュ
\$ドル記号
\{左波括弧
\}右波括弧
\[左角括弧
\]右角括弧
\0から\7778進数形式で表したASCII文字
\x0から\xFF16進数形式で表したASCII文字

「 ' (シングルクォート) 」で扱えるエスケープシーケンス

エスケープシーケンス (escape sequence) とは、コンピュータシステムにおいて、通常の文字列では表せない特殊な文字や機能を表現する、規定された特別な文字列のことです。

エスケープシーケンス(エスケープ文字列)
エスケープ文字(バックスラッシュ「\」(円記号で表されます))+1文字
そのシーケンスが表す文字
\'シングルクォート
\\バックスラッシュ

サンプルコード

– サンプル Click Here ! –

実行結果

シングルクォート
1+1
2

ダブルクォート
2+2
4

ソースコードを見てみてください。改行やタブが挿入されています。

\$\{\}\[\]

ダブルクォートで囲んだ文字列で扱うことができるエスケープシーケンス
ダブルクォート:"
改行:
復改:
タブ:
バックスラッシュ:\
ドルマーク:$
左波括弧:\{
右波括弧:\}
左角括弧:\[
右角括弧:\]
8進数形式で表したASCII文字:�
16進数形式で表したASCII文字:�

– サンプル Click Here ! –

文字列関数サンプル


タグ(=記事関連ワード)

日付

公開日:2017年6月16日
最終更新日:2019年09月18日

関連記事

配列関数サンプル

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/phpref-moziretsuatsukai/trackback/

page top