2010-02-25 68 views

回答

13

这就是所谓的HEREDOC syntax,这是一种在多行上定义字符串,使用可变插值的方法。


引述手册页:

定界符文本表现的就像一个 双引号字符串,而 双引号。这意味着heredoc中的引号 不需要被 转义,但上面列出的转义码 仍然可以使用。变量是 已扩展,但在与hellooc中的 字符串一起表示复杂 变量时,必须采用 。

(还有更多的阅读,我没有从手册页复制粘贴)


而且,作为一个非常快速和简单的例子:

$a = 'World'; 
$string = <<<MARKER 
<p> 
    Hello, $a! 
</p> 
MARKER; 
echo $string; 

它会给你这个输出:

Hello, World! 

d这个HTML源代码:

<p> 
    Hello, World! 
</p> 
+0

你是什么意思*“嵌套案件”*? – 2010-02-25 12:14:27

+0

这只是一种定义字符串而不必转义任何特殊字符的方法。它没有任何东西,真的,所以这个问题似乎有点奇怪。 – 2010-02-25 12:19:16

+0

仅供参考NOWDOC是新的HEREDOC:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc – 2010-02-25 13:40:19

0

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

块引用 分隔字符串的第三种方法是定界符:< < <。在这个操作符之后,提供了一个标识符,然后是一个换行符。字符串本身遵循,然后再次使用相同的标识符来关闭引用。

结束标识符必须从行的第一列开始。此外,标识符必须遵循与PHP中任何其他标签相同的命名规则:它必须仅包含字母数字字符和下划线,并且必须以非数字字符或下划线开头。

0

确实,这是Heredoc语法。

以防万一你想知道它会不会有什么兴趣VS普通字符串分隔符:

// These strings contain the same thing '"'" 
$s1 = '\'"\'"'; 
$s2 = "'\"'\""; 
$s3 = <<<EOS 
'"'" 
EOS 

没有更多报价逃逸。
对我来说,一个典型的用例是当我需要将一些HTML代码复制/粘贴到字符串中时。