作为一个新手,有人建议我最好使用这里的文档,而不是太多的嵌套代码(参见Unexpected T_ELSE in php code)。
但是我不能理解heredoc和nowdoc之间是否有显著的区别。
与新手理解的另一个相比,heredoc和nowdoc的优势是什么(即不是很小的优势,但对我来说很重要)。
发布于 2012-06-22 17:03:38
Nowdocs对于单引号的字符串就像heredocs对于双引号的字符串一样。指定nowdoc类似于heredoc,但在nowdoc中不进行任何解析。该构造非常适合嵌入PHP代码或其他大型文本块,而无需转义。
http://php.net/manual/en/language.types.string.php#language.types.string.syntax.nowdoc
换句话说:
$foo = 'bar';
$here = <<<HERE
I'm here, $foo !
HERE;
$now = <<<'NOW'
I'm now, $foo !
NOW;$here是"I'm here,bar !",而$now是"I'm now,$foo !“。
如果您不需要变量插值,但需要在字符串中包含像$这样的特殊字符,那么Nowdocs更容易使用。就这样。
发布于 2017-10-13 17:42:54
heredocs
\r回车,\t水平制表符,\v垂直制表符,\e转义符,\f换页符,反斜杠,\$美元符号,\“仍然可以使用双引号。变量已扩展,但在中表示复杂变量时必须与字符串一样小心。
示例:
$myname='Tikku';
$heredoc_exmaple= <<<HEREDOC
\\n ,\\r ,\t ,\r ,\\v ,\\e ,\f ,\\ , \ ,$89 ,$ , $myname , ' , \$myname , \" ,\'
HEREDOC;
echo $heredoc_exmaple;
//OUTPUT \n ,\r , , ,\v ,\e , ,\ , \ ,$89 ,$ , Tikku , ' , $myname , \" ,\'nowdocs
示例:
$myname='Tikku';
$nowdoc_exmaple= <<<'NOWDOC'
\\n ,\\r ,\t ,\r ,\\v ,\\e ,\f ,\\ , \ ,$89 ,$ , $myname , ' , \$myname , \" ,\'
NOWDOC;
echo $nowdoc_exmaple;
//OUTPUT \\n ,\\r ,\t ,\r ,\\v ,\\e ,\f ,\\ , \ ,$89 ,$ , $myname , ' , \$myname , \" ,\'语法:nowdoc使用与heredocs相同的<<<序列来标识,但后面的标识符用单引号括起来,例如<‘NOWDOC’。用于heredoc标识符的所有规则也适用于nowdoc标识符,尤其是那些关于结束标识符的外观的规则。
发布于 2012-11-17 05:24:13
当您不想处理复杂字符串的引用和取消引用时,Nowdoc非常有用,因为它不会解释任何引号,也不会接受变量。因此,它非常适合于手动显示实际的代码片段!
然而,如果你混合使用heredocs和nowdocs来处理字符串内容块,这是一个很容易陷入的诱惑,你很容易在使用heredoc的地方遇到XSS (跨站点脚本)问题!因此,这种方法对我来说还不够干净,不能推荐给一个用php开始的开发人员!相反,对于这些大的信息块,您应该尝试使用模板(任何类型的模板,或者您喜欢的任何模板引擎)。毕竟,你不想让html出现在你的php中,当然,你也不想要用户注入的javascript,比如:
$username = '<script>alert(document.cookie.toString())</script>';
$insecure_example = <<<HERE
I really like having my site exploited, $username
HERE;因此,不要使用HEREDOCS和NOWDOCS来代替适当的模板方法或模板引擎。
在语言或技术之间有接口的地方,你必须编码。php转到sql?绑定。php转到html?编码。http到php?
https://stackoverflow.com/questions/11153049
复制相似问题