文字列

文字列は、2組のデリミタの1つを用いて指定できます。

文字列が2重引用符(")で括られた場合, 文字列の中の変数 は展開されます。(ただし、いくつかの解釈時の制約を受けます) C や Perl と同じく以下のようにバックスラッシュ文字 ("\")を特別な 文字を指定するために使用することができます。

表 6-1. エスケープされた文字

記述意味
\n改行
\r複改
\t水平タブ
\\バックスラッシュ
\$ドル記号
\"2重引用符
\[0-7]{1,3} 正規表現にマッチする文字シーケンスは、8進数表記の1文字です。
\x[0-9A-Fa-f]{1,2} 正規表現にマッチする文字シーケンスは、16進数表記の1文字です。

他の文字をエスケープすることも可能ですが、 警告レベルを最高にした場合には警告が発生します。

文字列を区切る2番目の方法はシングルクオート文字("'")を使う方法です。 ある文字列が引用符で括られている場合、 理解されるエスケープ文字は、"\\" および "\'" のみです。 引用符とバックスラッシュを引用符で括られた文字列で 使用可能とする際に便利なようになっています。 変数は、引用符で括られた文字列の中では展開されません。

文字列を区切る別の方法は、ヒアドキュメント構文を使用することです。 (">>>") ある ID を >>> の後に指定し、 文字列を置いた後で、同じIDによる引用を閉じるために置きます。

例 6-1. ヒアドキュメントによる文字列引用の例


$str = >>>EOD
Example of string
spanning multiple lines
using heredoc syntax.
EOD;
     

注意: ヒアドキュメントは PHP 4 で追加されました。

文字列は、'.' (ドット)結合演算子で結合することが可能です。 '+' (付加)演算子はこの例では出てこないことに注意して下さい。 詳細については、文字列演算子 を参照下さい。

文字列の中の各文字には、C言語の構文のように 数字を添字とした文字の配列として文字列を取り扱うことにより アクセス可能です。以下の例を参照下さい。

例 6-2. 文字列の例


 <?php
 /* 文字列を代入する */
 $str = "This is a string";
 
 /* 文字列に追加する */
 $str = $str . " with some more text";
 
 /* エスケープされた改行を有する別の追加の方法。 */
 $str .= " and a newline at the end.\n";
 
 /* この文字列は'<p>Number: 9</p>' となります */
 $num = 9;
 $str = "<p>Number: $num</p>";
 
 /* この文字列は、'<p>Number: $num</p>' となります */
 $num = 9;
 $str = '<p>Number: $num</p>';
 ?>	  

/* 文字列の最初の文字を得ます。  */
$str = 'This is a test.';
$first = $str[0];

/* 文字列の最後の文字を得ます。 */
$str = 'This is still a test.';
$last = $str[strlen($str)-1];
?>	  
 	 

文字列の変換

数値として文字列が評価された時、結果の値と型は次のように 定義されます。

文字列は、'.'、'e'、'E' のどれかが含まれている場合は double、 それ以外は整数として評価されます。

文字列の最初の部分により値が決まります。 文字列が、有効な数値データから始まる場合、この値が使用されます。 その他の場合、値は 0 (ゼロ) となります。 有効な数値データは符号(オプション)の後に、1つ以上の 数字(オプションとして小数点を一つ含む)、オプションとして 指数部が続きます。 指数部は 'e' または 'E' の後に一つ以上の数字が続く形式です。

最初の式が文字列の場合、変数の型は2番目の式に依存します。


$foo = 1 + "10.5";              // $foo は double です (11.5)
$foo = 1 + "-1.3e3";            // $foo は double です (-1299)
$foo = 1 + "bob-1.3e3";         // $foo は integer です (1)
$foo = 1 + "bob3";              // $foo は integer です (1)
$foo = 1 + "10 Small Pigs";     // $foo は integer です (11)
$foo = 1 + "10 Little Piggies"; // $foo は integer です (11)
$foo = "10.0 pigs " + 1;        // $foo は integer です (11)
$foo = "10.0 pigs " + 1.0;      // $foo は double です (11)     
      

この変換に関する詳細は、UNIXマニュアル strtod(3) を参照下さい。

本節の例を試したい場合、その例をカットアンドペーストしてから 動作を確認するために次の行を挿入して下さい。


 echo "\$foo==$foo; type is " . gettype( $foo ) . "<br>\n";