php定界符eof如何使用?定界符内的变量会被解析么?
发布于 作者:苏南大叔 来源:程序如此灵动~
php里面的eof学名叫做定界符,在php里面可以用于变量定义大段文字。主要的知识点就是写法及格式。

大家好,这里是苏南大叔的“程序如此灵动”博客。苏南大叔在本文中将要讲述的问题是:php定界符是怎么使用的呢?本文测试环境:win10,php@7.3。
基本使用方式
$test = <<<EOF
文字,文字,文字
文字,
文字
EOF;这里一个非常令人觉得不爽的地方就是:定界符的结束部分,必须顶格写,前面不能有空格。
在通篇格式化良好的代码中,忽然就出现那么一行不符合要求的顶格的定界符,是非常令人不舒服的。

"定界符的结束部分,必须顶格写,前面不能有空格" 这个垃圾定界符格式规定,在php7.3系列中,被取消了。喜大普奔!
可能碰到的错误提示
在php版本号<=php7.2的代码中,可能还会碰到定界符的结束部分,引发的错误提示信息。例如:
Parse error: syntax error, unexpected end of file
但是,从php@7.3开始,这个令苏南大叔非常不爽的设定取消了。也就是说,从php@7.3开始,php代码中的eof的结束部分,可以按照心意常规编写放置了,喜大普奔。然而,您可能会碰到下面的错误提示:
Parse error: Invalid body indentation level (expecting an indentation level of at least 1) i意思就是:
定界符内的主体内容的缩进有问题,不能比下面这个截至符号靠前。也就是说,全选定界符内的内容,然后tab增加一下左侧缩进即可解决问题。

经验表明:从php@7.3开始,截至符号可以前面有空格了,但是,主体内容也要跟着缩进才行,否则报错。eof字样并不是定界符唯一选择
上述代码中,eof可以用其它任意普通英文字母或数字组合来代替(其它符号不行),大小写均可。
比如:
$test = <<<abc
文字,文字,文字
文字,
文字
abc;或者
$test = <<<mydiy
文字,文字,文字
文字,
文字
mydiy;变量可以解析 引号转义符原样输出
如果定界符内存在有变量,那么是会被解析的。例如:
$name = "sunan";
$test = <<<abc
hello $name
hi'' "hello"
<<<abc
\abc;
abc;
echo $test;如果定界符内的内容存在有定界符相同的字符,那么可能会出现问题,记得换个别的定界符吧。例如:
$test = <<<abc
hi'' "hello"
<<<abc
abc;
abc;最后的两个abc;就是起冲突的,适当修改一下定界符即可。例如:
$test = <<<abc1
hi'' "hello"
<<<abc
abc;
abc1;如果定界符内存在单引号或者双引号或者转义符,那么都会被原样输出。

相关文章
总结
一般来说,定界符就是用来定义一段html代码,所以以这个作为目标取考虑上述情况就基本上符合需求了。