php语句结束标记,PHP结束标记“?”
本問題已經(jīng)有最佳答案,請猛點(diǎn)這里訪問。
我有一個PHP結(jié)束標(biāo)記的有趣現(xiàn)象。 我有一個由Ajax調(diào)用執(zhí)行的php文件。 在php文件中包含了一個具有各種功能的php庫文件。 當(dāng)這個庫被包含時(shí),php響應(yīng)包括一堆空行。 當(dāng)我從庫中刪除結(jié)束標(biāo)記時(shí),這種情況就停止了。
任何人都可以向我解釋這里發(fā)生了什么?
你可能在?>標(biāo)簽后面有一些空行,然后空行被解釋為空行。 刪除php結(jié)束標(biāo)記時(shí),這些行被視為php代碼,并且空的php行不會寫入輸出緩沖區(qū)。
庫PHP文件在?>之后有一堆換行符。 它們作為輸出直接發(fā)送到輸出緩沖區(qū),因?yàn)樗鼈儾粫唤忉尀橹械腜HP代碼。 這是"已發(fā)送標(biāo)頭"錯誤的最常見原因,以及許多框架省略?>的原因。
php.net/manual/en/language.basic-syntax.phptags.php"如果文件是純PHP代碼,最好省略文件末尾的PHP結(jié)束標(biāo)記。這可以防止意外的空格或新行 在PHP結(jié)束標(biāo)記之后添加"
我認(rèn)為這個回答在另一個類似的問題上是一個完美的答案。
這是有據(jù)可查的。從PHP手冊:
The closing tag of a PHP block at the end of a file is optional, and in some cases omitting it is helpful when using include() or require(), so unwanted whitespace will not occur at the end of files, and you will still be able to add headers to the response later. It is also handy if you use output buffering, and would not like to see added unwanted whitespace at the end of the parts generated by the included files.
省略結(jié)束標(biāo)記有助于防止意外的空格或換行符添加到文件末尾。
這是PHP的核心功能:與其他語言不同,您需要使用特殊標(biāo)記(通常為)標(biāo)記PHP代碼,因?yàn)槠渌袃?nèi)容都被視為文字輸出:
This is not PHP
echo 'This is PHP' . PHP_EOL;
?>
This is not PHP either
D:\tmp>php test.php
This is not PHP
This is PHP
This is not PHP either
盡管手冊提到了HTML,但PHP并不真正了解/關(guān)心其標(biāo)簽之外的內(nèi)容類型。
如果您忘記在進(jìn)一步填充后關(guān)閉PHP塊,通常會出現(xiàn)語法錯誤:
This is not PHP
echo 'This is PHP' . PHP_EOL;
This is not PHP either
D:\tmp>php test.php
PHP Parse error: ?syntax error, unexpected 'is' (T_STRING) in D:\tmp\borrame.php on line 6
空行是一種特殊情況,因?yàn)樗鼈冊趲缀跛姓Z言(PHP,HTML,CSS,JavaScript ......)中都是有效且?guī)缀醪豢梢姷?#xff0c;因此它們經(jīng)常被忽視。
刪除?>標(biāo)記后,文字空白行已從腳本輸出中消失,因?yàn)樗鼈円殉蔀镻HP代碼的一部分(因此,它們已開始被忽略)。
當(dāng)然,PHP會忽略空行,但不一定是你生成的任何內(nèi)容,正如我所說,它不需要是HTML:它可以是圖片,PDF文檔,Excel電子表格。當(dāng)它是文件的最后一部分時(shí),不關(guān)閉最后一個PHP塊,可以很容易地避免偽造白線。
今天你不應(yīng)該在你的PHP中使用echo。 指向MVC,模板系統(tǒng),框架等。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的php语句结束标记,PHP结束标记“?”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为5g鸿蒙折叠,华为5G折叠概念新机:
- 下一篇: php是走什么协议,TCP是什么协议