14

PHPで、'何かの周りの通常の('または"なしの)記号の代わりに何を使用できますか?

例:

echo("Hello, World!")
4

1 に答える 1

32

文字列をカプセル化するには、一重引用符'、二重引用符"ヒアドキュメントnowdocの4つの方法があります。

ここで完全なphp.netの記事を読んでください。

ヒアドキュメント

文字列を区切る3番目の方法は、ヒアドキュメント構文です:<<<。この演算子の後に、識別子が提供され、次に改行が提供されます。文字列自体が続き、次に同じ識別子が続き、引用を閉じます。

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

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

Nowdoc

Nowdocsは一重引用符で囲まれた文字列であり、heredocsは二重引用符で囲まれた文字列です。nowdocはヒアドキュメントと同様に指定されますが、nowdoc内では解析は行われません。この構成は、エスケープせずにPHPコードやその他の大きなテキストブロックを埋め込むのに理想的です。構文解析用ではないテキストのブロックを宣言するという点で、SGML構造と共通するいくつかの機能を共有しています。

nowdocは、ヒアドキュメントで使用されるのと同じ<<<シーケンスで識別されますが、後続の識別子は一重引用符で囲まれます(例:<<<'EOT')。ヒアドキュメント識別子のすべてのルールは、nowdoc識別子、特に終了識別子の外観に関するルールにも適用されます。

http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc

$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;

脱出

一重引用符または二重引用符で囲まれた文字列内でリテラルの一重引用符または二重引用符を使用する場合は、それらをエスケープする必要があります。

$str = '\''; // single quote
$str = "\""; // double quote

Herbertが指摘したように、二重引用符で囲まれた文字列内で一重引用符をエスケープする必要はなく、一重引用符で囲まれた文字列内で二重引用符をエスケープする必要もありません。


大規模に引用符を追加する必要がある場合は、addslashes()関数を使用します。

$str = "Is your name O'reilly?";
echo addslashes($str); // Is your name O\'reilly?
于 2012-06-04T19:14:17.133 に答える