3

我需要使用一些脚本,其中我发现了这个:

$data = <<<DATA
MIN={$min}
INVOICE={$invoice}
AMOUNT={$sum}
EXP_TIME={$exp_date}
DESCR={$descr}
DATA;

有人可以提供更多关于$somevar = <<<DATA......和echo <<<HTML......似乎很难找到有用的信息。


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

它说: 分隔字符串的第三种方法是heredoc语法:<<<。在此运算符之后,提供一个标识符,然后是一个换行符。字符串本身紧随其后,然后再次使用相同的标识符来关闭引号。

4

3 回答 3

6

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

它说: 分隔字符串的第三种方法是heredoc语法:<<<。在此运算符之后,提供一个标识符,然后是一个换行符。字符串本身紧随其后,然后再次使用相同的标识符来关闭引号。

于 2012-07-19T08:25:38.263 回答
5

这是一个heredoc语法:

赫雷多克

第三种分隔字符串的方法是 heredoc 语法:<<<。在此运算符之后,提供一个标识符,然后是一个换行符。字符串本身紧随其后,然后再次使用相同的标识符来关闭引号。

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

您可以在 php 文档http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc中阅读更多相关信息

更多信息:

例子:

<?php
$mystring = <<<EOT
This is some PHP text.
It is completely free
I can use "double quotes"
and 'single quotes',
plus $variables too, which will
be properly converted to their values,
you can even type EOT, as long as it
is not alone on a line, like this:
EOT;
?> 

关于heredoc,有几个关键的事情需要注意,上面的例子:

你可以使用任何你喜欢的东西;“EOT”只是一个例子

您需要在分隔符之前使用 <<< 告诉 PHP 您要进入 heredoc 模式

PHP 中使用了变量替换,这意味着您确实需要转义美元符号 - 如果您不这样做,PHP 将尝试变量替换。

您可以在文本中的任何位置使用分隔符,但不能在新行的第一列中使用

在字符串的末尾,只需键入不带空格的分隔符,然后用分号结束语句

如果没有 heredoc 语法,复杂的字符串分配很快就会变得非常混乱。Heredoc 在野外并不经常使用 - 通常你会希望它被更多地使用,因为你会遇到太多的脚本由于不使用heredoc而导致代码混乱!

http://www.tuxradar.com/practicalphp/2/6/3

于 2012-07-19T08:27:08.917 回答
1

这称为 Heredoc,您可以指定一个标识符,然后使用它代替双引号字符串,这样您就不需要转义双引号,因为您的字符串已经有了不同的分隔符。它具有相同的转义规则和带有双引号字符串的解析规则(例如 \n、\r、变量解析等),但在使用 Heredoc 语法时不需要转义双引号。

{$desc}部分是 curly 语法,这是一种解析字符串中变量的复杂方法。复杂并不意味着难写。复杂意味着您可以有更多选项来解析变量(例如,您可以将函数的返回值分配为变量名,然后解析该变量等)

有关 heredoc 和 curly 语法的更多信息,请参见此处:http ://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

于 2012-07-19T08:29:35.703 回答