-
-4 19
-
echo <<<EOF
Your content here.
EOF;就相当于一个跨行的字符串,和用双引号括起来的字符串一样,只不过里面的双引号就不需要转义了。
类似的用法有:$str=<<<STR
Your content here.
STR;注意标识符“EOF“、“STR“等必须配对,结束的标识符必须在行首。定界符,相当于单引号和双引号的作用.
一 PHP 的字符串的申明方式有四种:
(1)‘’:单引号, $str = 'string';
(2) "":又引号, $str = "string";
(3) heredoc:heredoc语法,$str = <<<HTML.....HTML;
(4) nowdoc: nowdoc 语法,$str = <<<'HTML'......HTML;(此种语法要PHP 5.3才支持)
二详细:
相必大家对1,2种方式都比较熟悉了,我就不多说了,这里主要说说 PHP 的 heredoc <<< 和 nowdoc <<< 语法.
1 Heredoc <<< 语法
Heredoc 语法以<<< 开始,后面跟上一个合法的任意标识符(所谓合法是指:符合在PHP中定义标识符的规则:必须只包含字母数字,下划线,并且不能以数字或者下划线开头),并且单独成一行。然后,字符串接在它下面,最后用相同的标识符作为结束标记。
例如:
$str = <<<HTML
FSDFSDFJSDF
HTML;
$s = 'aa';
echo <<<HTML
FSDFSDFJSDF{$s},
"$s"
HTML;
以上文字有值得注意的是:(注意:所说的"任何字符")
(1) 开始标识与结束标识符是完全一样的,而且他们都是在一行上,后面没有跟上任何字符,包括空格。特别是结束标识符,它是单独成一行的,也就是说它的前后都没有任何字符(当然:除了可能是一个分号(;))。 另外标识符,一般建议都用大写字母。
(2) 当要在字符中解析变量时,可用双引号,大括弧号来限定。
(3) 结束标识符是不能作为整个脚本的结束符的,也就是说当结束符的下一行,没有任何字符时,将会报解析错误。
(4)Heredoc 还不能在类中作初始化变量的值。
如:
class foo {
public $bar = <<<EOT
bar
EOT;
}
(5) 此语法需要PHP4以上支持
2 Nowdoc <<< 语法
nowdoc 与heredoc 语法类似,只不过在<<<后跟上的开始标识符上要加上单引号(<<<'HTML')nowdoc中,不会作语法解析,这点与单引号一样。有了nowdoc,在需要原样大量输出PHP代码时就会很有用。
例子:
$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;
/* More complex example, with variables. */
class foo
{
public $foo;
public $bar;
function foo()
{
$this->foo = 'Foo';
$this->bar = array('Bar1', 'Bar2', 'Bar3');
}
}
$foo = new foo();
$name = 'MyName';
echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': \x41
EOT;
注意:
(1)Nowdoc 允许在类中作初始化变量的值。
如:
class foo {
public $bar = <<<'EOT'
bar
EOT;
}
(2) 此语法需要PHP5.3.0以上支持
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
- 评论(1)
发表评论 TrackBack