2012-07-20 29 views
-1


所以,在Perl和PHP,你就可以生产使用数 “<” 符号的文本块:
的Perl:PHP:插值字符串中PHP变量阻塞

return <<TEXT; 
    <a href=$foo>Perl interpolates this properly</a> 
TEXT 

PHP:

return <<<TEXT 
    <a href=$bar>PHP does not interpolate this...</a> 
TEXT; 

所以,我的问题是,有没有办法(干净地)在PHP中这样做,就像在Perl中一样?
我试过<?...?><?php...?>,但它们做同样的事情......
此外,这实际上是整个文本块的一个子集......否则我只是建立字符串。

+0

那么,它不工作? “(干净)”是什么意思?预期的和实际的结果? – mario 2012-07-20 19:35:46

+0

我应该指定它不是像插入“$ foo”一样。不过,我相信我应该把脚放在嘴里。我相信Frits回答了这个问题,并告诉我我做错了什么......我从来没有尝试过没有php标签... – Thumper 2012-07-20 19:38:48

+0

PHP heredocs默认在文档中插入变量,就好像它是双引号字符串。您发布的代码应该可以正常工作。 – 2012-07-20 19:38:49

回答

3

是的,这就是所谓的定界符:

$str = <<<EOD 
Example of string 
spanning multiple lines 
using heredoc syntax. 
EOD; 

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

+0

很明显,他已经知道该语法,如OP第二个示例所示。他的询问是关于那里的变数。你有没有明确他的询问是关于什么? – mario 2012-07-20 19:37:11

+0

哦,我明白了,你的意思是'eval'? http://php.net/eval – Halcyon 2012-07-20 19:39:31

+0

我不知道OP的含义。也许他把它写成纯粹的文本文件(没有包含<?php标记),或者没有在行开始处启动HEREDOC标记,或者其他什么。 – mario 2012-07-20 19:41:05

2

PHP here文档被视为就像双引号字符串,所以如果你的意图是在最终显示的$酒吧的价值字符串,这应该工作。