文字列は、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";