作成日:2006/05/10
1C.4 文字列(string)
文字列には以下の3種類の表記があります。 意味論的にはPerlとほぼ同じですが、文法が微妙に異なっているので混同しないで下さい。
| 表記 | 用例 |
|---|---|
| 単一引用符 |
$a = 'ABC'; // エスケープシーケンスと変数展開は記述できません。 $a = 'AB\'C'; // 但し、\'と\\のみ定義されています。 $a = 'ABC\\'; // この用法は、Perlと同じです。 |
| 二重引用符 |
$a = "Hello\nWorld."; // エスケープシーケンスが記述できます。 $a = "Hello $foo"; // 変数展開ができます。 |
| ヒアドキュ メント構文 |
$a = <<<EOF Hello\nWorld. EOF; echo <<<EOF Hello $foo. EOF; // ヒアドキュメント構文にもエスケープシーケンスと変数展開があります。 // 上例(EOF)はラベルです。名前付けはPHPのラベルの規則に従います。 // 上例(<<<EOF)の後にはコメントは記述できません。 // 上例(EOF;)は必ず第1行がら初め、;の後には何も記述できません。 |
1C.4.1 エスケープシーケンス
| 表記 | 説明 |
|---|---|
| \n | ラインフィード(LFまたはアスキーの0x0A (10)) |
| \r | キャリッジリターン (CRまたはアスキーの0x0D (13)) |
| \t | 水平タブ(HTまたはアスキーの0x09 (9)) |
| \\ | バックスラッシュ |
| \$ | ドル記号 |
| \" | 2重引用符 |
| \NNN |
8進数表記(NNN)の任意の1文字 NNNの正規表現: [0-7]{1,3} 用例:
echo "Hello\011world."; // \tに同じ |
| \xNN |
16進数表記(\xNN)の1文字です NNの正規表現: [0-9A-Fa-f]{1,2} 用例:
echo "Hello\x09world."; // \tに同じ |
1C.4.2 変数展開
| 型 | 用例 |
|---|---|
| スカラ型 |
echo "foo is $foo."; // A型
echo "foo is ${foo}."; // B型
echo "foo is {$foo}."; // C型
|
| 配列(添字配列) |
echo "1'st fruits is $fruits[1]."; // A型
echo "1'st fruits is ${fruits[1]}."; // B型
echo "1'st fruits is {$fruits[1]}."; // C型
|
| 配列(連想配列) |
echo "A banana is $color['banana']."; // A型 =>パースエラー
echo "A banana is ${color['banana']}."; // B型
echo "A banana is {$color['banana']}."; // C型
|
| オブジェクト |
echo "This board is $square->width meters."; // A型
echo "This board is ${square->width} meters."; // B型 =>パースエラー
echo "This board is {$square->width} meters."; // C型
|
※ 安全サイドで言うと上表のC型を習慣的に使うのが良いように思います。
※ 配列のキーに裸の文字列(例えば:$color[banana])を使用するのは禁物です。キーは定数の可能性があります。
1C.4.3 部分文字構文
| 構文 | 用例 |
|---|---|
| string{オフセット位置} ※推奨 |
$first = $str{0};
$second = $str{1};
$last = $str{strlen($str)-1};
|
| string[オフセット位置] ※非推奨(旧式) |
$first = $str[0]; $second = $str[1]; $last = $str[strlen($str)-1]; |
