web-dev-qa-db-ja.com

PHP( 'または "なし)で文字列リテラルを記述する別の方法はありますか?

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

例:

echo("Hello, World!")
13
user1380936

文字列、一重引用符をカプセル化する方法は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は一重引用符で囲まれた文字列であり、ヒアドキュメントは二重引用符で囲まれた文字列です。 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

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


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

$str = "Is your name O'reilly?";
echo addslashes($str); // Is your name O\'reilly?
31
Jeroen