我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

php里面的eof学名叫做定界符,在php里面可以用于变量定义大段文字。主要的知识点就是写法及格式。

苏南大叔:php定界符eof如何使用?定界符内的变量会被解析么? - php-eof
php定界符eof如何使用?定界符内的变量会被解析么?(图5-1)

大家好,这里是苏南大叔的“程序如此灵动”博客。苏南大叔在本文中将要讲述的问题是:php定界符是怎么使用的呢?本文测试环境:win10php@7.3

基本使用方式

$test = <<<EOF
文字,文字,文字
文字,
文字
EOF;

这里一个非常令人觉得不爽的地方就是:定界符的结束部分,必须顶格写,前面不能有空格。
在通篇格式化良好的代码中,忽然就出现那么一行不符合要求的顶格的定界符,是非常令人不舒服的。

苏南大叔:php定界符eof如何使用?定界符内的变量会被解析么? - 定界符格式更加人性化
php定界符eof如何使用?定界符内的变量会被解析么?(图5-2)

"定界符的结束部分,必须顶格写,前面不能有空格" 这个垃圾定界符格式规定,在php7.3系列中,被取消了。喜大普奔!

可能碰到的错误提示

php版本号<=php7.2的代码中,可能还会碰到定界符的结束部分,引发的错误提示信息。例如:

Parse error: syntax error, unexpected end of file

苏南大叔:php定界符eof如何使用?定界符内的变量会被解析么? - 定界符格式php低版本
php定界符eof如何使用?定界符内的变量会被解析么?(图5-3)

但是,从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定界符eof如何使用?定界符内的变量会被解析么? - php73定界符主体缩进
php定界符eof如何使用?定界符内的变量会被解析么?(图5-4)

经验表明:从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;

如果定界符内存在单引号或者双引号或者转义符,那么都会被原样输出。

苏南大叔:php定界符eof如何使用?定界符内的变量会被解析么? - 定界符特殊格式
php定界符eof如何使用?定界符内的变量会被解析么?(图5-5)

相关文章

总结

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

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php