【PHPの型】stringの説明と使い方 基本編

【PHPの型】stringの説明と使い方 基礎編

どうもタスです。

プログラムは、変数に代入する数値や文字列などのリテラルを分類する「型」というものを使用します。

PHPは動的型付け言語のため、変数を使用する際に明示的に型を宣言する必要はないですが、全ての変数は型を持っていて、内部的には明確に分類されています。

そこで今回は、型のうちの一つである「string型」について基本的な構文について説明します。

 

「string型」の応用的な使い方についての説明は以下をご覧ください。

 

「boolean」型もしくは「integer」型についての説明は以下の記事を参考にしてください。

 

「float」型もしくは「double」型についての説明は以下の記事を参考にしてください。

 



PHPの10種類の基本型

【PHPの型】float及びdoubleの説明と使い方

PHPは、10種類の基本型をサポートしており、以下のとおりになります。

4種類のスカラー型

  • 論理値:boolean
  • 整数:integer
  • 浮動小数点数:float, double
  • 文字列:string

4種類の複合型

  • 配列:array
  • オブジェクト:object
  • callable
  • iterable

2種類の特別な型

  • リソース:resource
  • ヌル:NULL

上記の中で、今回は「文字列:string」に焦点を当てています。

 

文字列型「stirng」の説明

【PHPの型】stringの説明と使い方 基礎編

文字を連結した文字列を表す型を「string」と言います。

PHPは、全ての文字列が可変長文字列であり、固定長文字列は存在しません。

PHP7.0.0以降は、64ビット版の文字列の長さに関する特別な制限はありませんが、32ビット版及びそれ以前のPHPでは、文字列の最大長は2GBに制限されます。

文字列リテラルは、以下の4つの異なる構文により指定可能です。

引用符
二重引用符
ヒアドキュメント構文
nowdoc構文(PHP5.3.0以降)

以下にそれぞれの特徴を記述します。

 

引用符

文字列を指定する最も簡単な方法は、引用符(シングルクォーテーション「’」)で文字列を括ることです。

なお、引用符自体をリテラルで指定したい場合は、バックスラッシュ「\」でエスケープする必要があります。

さらに、バックスラッシュ自体をリテラルに指定する場合は、二重に記述する必要があります(\\)。

それ以外でバックスラッシュを記述した場合は、単なるバックスラッシュ文字として扱われます。

つまり、「\n」や「\r」はエスケープシーケンスとしての効果は得られず、そのままの文字列として出力されます。

なお、シングルクォーテーションを引用符として使用した場合は、その中で変数を指定しても展開されません。

 

二重引用符

引用符としてダブルクォーテーションを指定した場合は、以下のエスケープシーケンスを特殊な文字として解釈します。

\n:ラインフィード(LFまたはアスキーの0x0A(10))
\r:キャリッジリターン(CRまたはアスキーの0x0D(13))
\t:水平タブ(HTまたはアスキーの0x09(9))
\v:垂直タブ(VTまたはアスキーの0x0B(11))(PHP5.2.5以降)
\e:エスケープ(ESCあるいはアスキーの0x1B(27))(PHP5.4.4以降)
\f:フォームフィード(FFまたはアスキーの0x0C(12))(PHP5.2.5以降)
\\:バックスラッシュ
\$:ドル記号
\”:二重引用符
\[0-7]{1,3}:正規表現にマッチする文字シーケンスは、8進数表記の1文字です。1バイトに収まらない部分は、何もメッセージを出さずにオーバーフローします
(そのため、”\400″ === “\000″となります)。
\x[0-9A-Fa-f]{1,2}:正規表現にマッチする文字シーケンスは、16進数表記の1文字です。
\u{[0-9A-Fa-f]+}:正規表現にマッチする文字シーケンスは、Unicodeのコードポイントです。そのコードポイントのUTF-8表現を文字列として出力します(PHP7.0.0で追加されました)。

引用符でも言ったように、上記以外の文字をエスケープしようとした場合には、バックスラッシュも文字として出力されます。

ただし、シングルクォーテーション括りに対してダブルクォーテーション括りで大きく異なる点は、変数が展開されることです。

 

ヒアドキュメント

文字列を表す別の方法として、ヒアドキュメント構文があります。

これは、ヒアドキュメント構文(<<<)の後に任意のIDを指定し、文字列を記述した後に先に記述したのと同じIDで閉じる構文です。

言葉だけでは分かり辛いので、以下の例文を見てください。

出力例
あいうえお
かきくけこ
さしすせそ

たちつてと
なにぬねの
はひふへほ

なお、IDには変数の命名規則などと同様に「英数字およびアンダースコアのみを含み、 数字でない文字またはアンダースコアで始まる」ルールが適用されます。

ここで使用している「EOM」は「End Of Message」という意味がありますが、上記のとおり、好きな文字列を使用して構いません。

ヒアドキュメントはダブルクォーテーションで括られていませんが、ダブルクォーテーションで括られた場合と同様の動作になります。

よって、二重引用符でお伝えしたエスケープコードを使用することが可能で、且つ変数も展開されます。

特に重要なこととして、終端IDの行はセミコロン以外の文字を記述しないことです。

インデントや空白、タブなどは記述することでパースエラーになるので注意が必要です。

 

Nowdoc

ヒアドキュメントと似ていますが、異なる点としてはヒアドキュメントはパース対象でダブルクォーテーションで括った場合と同じ扱いになりますが、Nowdocはパース対象とはならず、シングルクォーテーションで括った場合と同様の扱いになります。

Nowdocの書き方は、ヒアドキュメントと同様、「<<<」を使用します。

ただし、その後に続く識別子(ヒアドキュメントでいうID)をシングルクォーテーションで囲んで「<<<‘EOM’」のように書きます。

この識別子の命名規則はヒアドキュメントと同様で、且つ変数も展開されえることがありません。

出力例
あいうえお
かきくけこ
さしすせそ

たちつてと
なにぬねの
はひふへ{$ho}

スポンサーリンク


Pocket


SNSでもご購読できます。

コメントを残す

*

CAPTCHA


タスlife