什么情況下可以不寫PHP的閉合標簽“?>”
在一些PHP項目里我們經(jīng)常會看到有些PHP文件中的代碼是只有開始標簽,而沒有結(jié)束標簽的,那么什么情況下可以不寫這個結(jié)束標簽,而什么情況下又必須寫?
對此我們先來看2個例子:
下面的代碼可以正常運行:
<?php echo 123456;
下面的代碼會報錯:
<?php echo 123456; <p>abc</p>
原因分析:
前者是純php代碼,可以不寫結(jié)束標簽,也不推薦寫結(jié)束標簽;后者除了php代碼,還有html代碼,必須要寫結(jié)束標簽。
那么為什么不推薦前者寫結(jié)束標簽?zāi)兀?br />
因為在不寫php結(jié)束標簽時,默認從開始標簽往后都是php代碼,如果有其他代碼,那就會報錯。php只能運行在php標簽里面的腳本,在腳本之外的所有字符,包括你看不見的空格或者回車,制表符號,都是作為輸出內(nèi)容會response到客戶端的,這樣就有可能會產(chǎn)生意想不到的事情。例如文件里面使用了header函數(shù),這個文件同時又包含了另外一個文件,并且被包含的文件的php標簽外有空字符,這個時候會報header already send的錯誤。我們查看一些網(wǎng)頁的源代碼看到的開頭部分有很多空格和換行,就是因為這個原因?qū)е碌摹?/p>
解決方案建議:
庫文件、或者一些class文件等只有純php代碼的文件不推薦加結(jié)束標簽。
相信本文所述對大家的PHP程序設(shè)計有一定的參考價值。
相關(guān)文章
php 攻擊方法之談php+mysql注射語句構(gòu)造
由于PHP和MYSQL本身得原因,PHP+MYSQL的注射要比asp困難,尤其是注射時語句的構(gòu)造方面更是個難點,本文主要是借對Okphp BBS v1.3一些文件得簡單分析,來談?wù)刾hp+mysql注射語句構(gòu)造方式,希望本文對你有點幫助。2009-10-10
基于PHP創(chuàng)建Cookie數(shù)組的詳解
本篇文章是對在PHP中創(chuàng)建Cookie數(shù)組的方法進行了詳細的分析介紹,需要的朋友參考下2013-07-07
php中mail函數(shù)發(fā)送郵件失敗的解決方法
這篇文章主要介紹了php中mail函數(shù)發(fā)送郵件失敗的解決方法,涉及針對Linux運行平臺相關(guān)組件的配置技巧,具有一定的參考借鑒價值,需要的朋友可以參考下2014-12-12

