String
String は文字のシーケンスです。 PHP では、文字はバイトと同じです。つまり、合計 256 個の異なる文字が存在する可能性があります。これは、PHP が Unicode をネイティブにサポートしていないことも意味します。 Unicode サポートの詳細については、関数 utf8_encode() および utf8_decode() を参照してください。
注: 文字列が非常に大きくなっても問題はありません。PHP は文字列のサイズに実装範囲を課していないため、長い文字列について心配する必要はまったくありません。
構文
文字列は 3 つのリテラルな方法で定義できます。
一重引用符
二重引用符
区切り文字
一重引用符
単純な文字列を指定する最も簡単な方法は、それを一重引用符 (文字 ') で囲むことです。
一重引用符を表すには、他の多くの言語と同様に、バックスラッシュ () でエスケープする必要があります。一重引用符の前または文字列の末尾にバックスラッシュが必要な場合は、2 つのバックスラッシュを使用します。他の文字をエスケープしようとすると、バックスラッシュ自体も表示されることに注意してください。したがって、通常はバックスラッシュ自体をエスケープする必要はありません。
注: PHP 3 では、この場合、E_NOTICE レベルの警告が発行されます。
注: 他の 2 つの構文とは異なり、一重引用符で囲まれた文字列内にある変数とエスケープ シーケンスは、変数の値で置き換えられません。
<?phpecho 'this is a simple string';echo 'You can also have embedded newlines instrings this way as it isokay to do';// Outputs: Arnold once said: "I'll be back"echo 'Arnold once said: "I'll be back"';// Outputs: You deleted C:*.*?echo 'You deleted C:\*.*?';// Outputs: You deleted C:*.*?echo 'You deleted C:*.*?';// Outputs: This will not expand: n a newlineecho 'This will not expand: n a newline';// Outputs: Variables do not $expand $eitherecho 'Variables do not $expand $either';?> ログイン後にコピー |
二重引用符
文字列を二重引用符 (") で囲む場合、PHP は特殊文字のエスケープ シーケンスをより多く認識します:
表 11-1. エスケープ文字
シーケンスの意味
n 改行 (LF または ASCII 文字 0x0A (10))
r 復帰 (CR または ASCII 文字 0x0D (13))
t 水平タブ (HT または ASCII 文字 0x09 (9))
バックスラッシュ
$ ドル記号
" 二重引用符
[0-7]{1,3} この正規表現シーケンスは、8 進表記で表される文字と一致します
x[0-9A-Fa-f] {1,2} この正規表現シーケンスは 16 進表記で表される文字と一致します
さらに、他の文字をエスケープしようとすると、バックスラッシュ自体も表示されます。
二重引用符で囲まれた文字列について最も重要なことは、変数名が変数値に置き換えられることです。詳細については、「文字列の解析」を参照してください。
区切り文字
文字列を区切る別の方法は、区切り文字構文 (「
終了識別子は行の最初の列から開始する必要があります。同様に、識別子は PHP の他のタグの命名規則に従う必要があります。識別子には英数字のアンダースコアのみが含まれ、アンダースコアまたは数字以外の文字で始まる必要があります。
警告
識別子を終了する行には、おそらくセミコロン (;) を除いて、他の文字を含めることはできないことに注意することが重要です。これは特に、識別子をインデントできないこと、およびセミコロンの前後にスペースやタブを含めることができないことを意味します。終了識別子の前の最初の文字は、オペレーティング システムで定義されている改行文字でなければならないことを認識することも重要です。たとえば、Macintosh システムでは r です。
このルールに違反して終了識別子が「クリーン」でなくなると、それは終了識別子とは見なされず、PHP はそれを探し続けます。この場合、適切な終了識別子が見つからないと、スクリプトの最後の行で構文エラーが発生します。
区切り文字で区切られたテキストは、二重引用符がないだけで、二重引用符で囲まれた文字列のように動作します。つまり、区切りテキスト内で引用符をエスケープする必要はありませんが、上記のエスケープ コードは引き続き使用できます。変数は展開されますが、複雑な変数を区切りリテラルで表現する場合は、文字列の場合と同じ注意が必要です。
例 11-2. 区切り文字列の例:
<?php $str = <<<EODExample of stringspanning multiple linesusing heredoc syntax.EOD;/* More complex example, with variables. */class foo{ var $foo; var $bar; function foo() { $this->foo = 'Foo'; $this->bar = array('Bar1', 'Bar2', 'Bar3'); }}$foo = new foo();$name = 'MyName';echo foo.Now, I am printing some {$foo->bar[1]}.This should print a capital 'A': x41EOT;?> ログイン後にコピー |
注: 区切り文字のサポートは PHP 4 で追加されました。
1