在PHP中使用echo <<<HTML

3

我需要处理一些脚本,在其中发现以下内容:

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

有人可以提供更多关于$somevar = <<<DATAecho <<<HTML的信息吗?似乎难以找到有用的信息。


在一些集成开发环境中,你在 <<< 后面使用的代码甚至可以告诉 IDE 使用与该代码相关联的规则进行语法高亮和代码检查。例如,<<<SQL 将被视为 SQL 代码。 - Jason Aller
3个回答

6

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

1
这被称为Heredoc,您可以指定一个标识符,然后使用它来代替双引号字符串,因此您不需要转义双引号,因为您已经有了一个不同的分隔符来表示字符串。它具有与双引号字符串相同的转义规则和解析规则(例如\n、\r、变量解析等),但是在使用Heredoc语法时不需要转义双引号。 {$desc}部分是花括号语法,这是一种在字符串中解析变量的复杂方式。复杂并不意味着难以编写。复杂意味着您可以有更多选项来解析变量(例如,您可以将函数的返回值分配为变量名,然后解析该变量等)。
有关heredoc和花括号语法的更多信息,请参见:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接