文字列の扱い
そふぃのPHP入門 >> PHP言語リファレンス >> PHPの基本文法 >> 文字列の扱い

文字列の扱い

PHPで文字列を扱うには

  1. "(ダブルクォーテーション)で囲む
  2. '(シングルクォーテーション)で囲む
  3. ヒアドキュメント

PHPでの文字列の扱い方法

PHPで文字列を指定する方法には以下の3種類があります。

  1. 引用符(「'」シングルクォーテーション)
  2. 2重引用符(「"」ダブルクォーテーション)
  3. ヒアドキュメント

順番に説明していきます。

引用符の場合

PHPでは文字を扱うには引用符でクォートするという決まりがあります。どういう事かというと、文字を「"」(ダブルクォーテーション)もしくは「'」(シングルクォーテーション)で囲むということです。

今までのサンプルで出してきたものにも「"」がついていたと思いますが、ダブルクォーテーション(やシングルクォーテーション)でクォートする理由は、PHPの命令や構文の部分と文字の部分を分ける事にあります。「この部分は文字ですよ」とPHP君に教えるわけです。文字の事はプログラムで「文字列」と表現される事が多いです。

ダブルクォートとシングルクォート

  1. <?php
  2. print "ダブルクォートで出力";
  3. echo 'シングルクォートで出力';
  4. ?>

出力結果

ダブルクォートで出力シングルクォートで出力

どちらも無事に出力されて結果が表示されたと思います。ダブルクォーテーションとシングルクォーテーションの違いは今のところ気にしなくていいです。ただ単に文字列を出力しているだけなら違いはないからですww。答えを簡単に言うと、変数展開やエスケープ処理などに違いがありますが、その辺は変数の項目に入ってからやりたいと思います。

ヒアドキュメントの場合

PHPで文字列を扱いたい場合、さらにもう1つ方法があります。ヒアドキュメントと呼ばれるこの方法ですが導入されたのはPHP4からのため、それ以前のバージョンでは使えませんので注意して下さい。

ヒアドキュメントとは「<<<」の後に任意のIDを指定し、そのIDが行頭に来るまでの間のすべてが文字列として扱われます。IDとして使用できる文字は文字か数字か「_」(アンダーバー)ですが、数字がID名の先頭にきてはいけません。先頭は必ず文字か「_」にして下さい。「_」以外の記号は使えません。正確にはどんなものが「文字」として扱われるのかは文字コードの知識が必要ですのでここではやりませんが、日本語つまり平仮名や漢字なんかもID名に使えます。試してみて下さい。

ヒアドキュメントの使い方

  1. <?php
  2. //ヒアドキュメントの指定方法
  3.  
  4. //まずIDを指定。この場合のIDはEOTになる
  5. echo <<<EOT
  6.  
  7.  ヒアドキュメントはこのようにして使います。
  8.  複数行の指定も可能です。
  9.  この部分はすべて文字列として扱われます。
  10.  終了するには指定したIDを行頭においてヒアドキュメントを閉じます。
  11.  
  12. EOT;
  13. //ヒアドキュメントの終了。終端IDの行に余分な空白があるとエラーになります。
  14. ?>

出力結果

ヒアドキュメントはこのようにして使います。 複数行の指定も可能です。 この部分はすべて文字列として扱われます。 終了するには指定したIDを行頭においてヒアドキュメントを閉じます。

終端IDの注意点

つまり、クォーテーションで括らない代わりに、自分で好きなIDをつけてそのIDで文字列を括ってるわけですが、ヒアドキュメントを扱うにはいくつか注意しておかなくてはならない事があります。

  1. 終端IDは必ず行頭に置かなくてはならない。
  2. 終端IDの行には「;」(セミコロン)以外置いてはならない
  3. タブやスペースでのインデントもセミコロンの前後に空白を置くのもだめ
  4. コメントつけるのも却下

このように終端IDは必ず改行の直後に置いて、その行には処理の終了を表す「;」以外は空白やタブなどの見えないような文字ですら存在してはいけないんです。面倒ですね~~~。エディタの自動インデント機能なんか使ってる人は注意して下さいね。わざわざインデントをなくしてあげて下さい(笑)。

終端IDが以上のルールに反した場合、PHPは終端IDを最終行まで探しつづけたあげくに「ねーじゃねーかよっ( ̄ヘ ̄)凸!!」って最終行数のエラーを発生します。

Parse error: parse error in (ファイルパスと最終行数)

開始IDの注意点

さらに開始IDでもう少し注意して欲しい事があるので書いときます。

  1. 開始IDの前後に全角空白があるとIDはその空白も含めたものになる
  2. 開始IDの後ろにタブと半角スペースは入れられない。
  3. <<< とIDの間にはタブと半角スペースを入れられる。
  4. 開始IDの後ろにはコメントもつけられない。

まぁ、開始IDの後ろにも改行以外の余分な文字は入れない方がいいですよ、って事です。どうしても開始IDの行に何か書きたい場合は「<<<」の前になら書けます。その場合のコメントは当然「/* */」形式でないと開始IDまでコメントアウトされちゃいますね。無理して開始IDの行に書く必要はないと思いますがw。

以上がPHPでの文字列の扱い方法です。文字列は何かで括らないといけないという事が分かったと思います。次は改行処理をしてみたいと思います。

シングル・ダブルクォートとヒアドキュメントの違い

シングルクォート・ダブルクォートとヒアドキュメントによる違いです。

文字列の扱い 変数展開 特殊文字(\nなど) エスケープする文字
ダブルクォーテーション「"」 される 特殊文字として扱う $ \ "
シングルクォーテーション「'」 されない そのまま扱う '
ヒアドキュメント される 特殊文字として扱う なし