我有一个PHP结束标记的有趣现象.我有一个由Ajax调用执行的php文件.在php文件中包含了一个具有各种功能的php库文件.当这个库被包含时,php响应包括一堆空行.当我从库中删除结束标记时,这种情况就停止了.任何人都可以向我解释这里发生了什么?
Álv*_*lez 15
这是一个核心PHP功能:与其他语言不同,您需要使用特殊标记(通常<?php)标记PHP代码,因为其他所有内容都被视为文字输出:
This is not PHP
<?php
echo 'This is PHP' . PHP_EOL;
?>
This is not PHP either
Run Code Online (Sandbox Code Playgroud)
D:\tmp>php test.php
This is not PHP
This is PHP
This is not PHP either
Run Code Online (Sandbox Code Playgroud)
尽管手册提到了HTML,但PHP并不真正了解/关心其标签之外的内容类型.
如果您忘记在进一步填充后关闭PHP块,通常会出现语法错误:
This is not PHP
<?php
echo 'This is PHP' . PHP_EOL;
This is not PHP either
Run Code Online (Sandbox Code Playgroud)
D:\tmp>php test.php
PHP Parse error: syntax error, unexpected 'is' (T_STRING) in D:\tmp\borrame.php on line 6
Run Code Online (Sandbox Code Playgroud)
空行是一种特殊情况,因为它们在几乎所有语言(PHP,HTML,CSS,JavaScript ......)中都是有效且几乎不可见的,因此它们经常被忽视.
删除?>标记后,文字空白行已从脚本输出中消失,因为它们已成为PHP代码的一部分(因此,它们已开始被忽略).
当然,PHP会忽略空行,但不一定是你生成的任何内容,正如我所说,它不需要是HTML:它可以是图片,PDF文档,Excel电子表格.当它是文件的最后一部分时,不关闭最后一个PHP块,可以很容易地避免伪造白线.