有沒有什麼辦法讓php停止處理一個文件,並讓它只處理它已經解析過的部分。我的意思是這樣的:停止php處理文件
<some data here>
<?php phpinfo(); [IS THERE ANY THING I CAN PUT HERE] ?>
<more data>
[IS THERE ANY THING I CAN PUT HERE]
<?HOW CAN I MAKE PHP NOT PARSE THIS?>
是否有無論如何使第一個php部分後php忽略數據?
有沒有什麼辦法讓php停止處理一個文件,並讓它只處理它已經解析過的部分。我的意思是這樣的:停止php處理文件
<some data here>
<?php phpinfo(); [IS THERE ANY THING I CAN PUT HERE] ?>
<more data>
[IS THERE ANY THING I CAN PUT HERE]
<?HOW CAN I MAKE PHP NOT PARSE THIS?>
是否有無論如何使第一個php部分後php忽略數據?
另一種解決辦法可能是使用__halt_compiler
:
暫停編譯器的執行。 這對於將數據嵌入到 PHP腳本中很有用,例如安裝 文件。數據開始的
字節的位置可以通過是否存在
__halt_compiler()
在 文件呈現其僅定義的__COMPILER_HALT_OFFSET__
恆定 可以 確定。
的典型用法是Phar archives,當你需要嵌入PHP和(可能是二進制)數據到一個單一的文件,和PHP代碼需要訪問這些數據。
而實際上是有區別的:驗證碼:
blah blah
<?php phpinfo(); ?>
glop glop
<?php exit(); ?>
<?HOW CAN I MAKE PHP NOT PARSE THIS?>
獲取我Parse error: syntax error, unexpected T_STRING
(可能是因爲我已經啓用short_open_tag
,我想)
這枚一個:
blah blah
<?php phpinfo(); ?>
glop glop
<?php __halt_compiler(); ?>
<?HOW CAN I MAKE PHP NOT PARSE THIS?>
工作正常 - 這個無效的PHP代碼在撥打__halt_compiler()
之後。
不錯的提示!將文件的其餘部分發送到瀏覽器(不是在那裏裁剪/剪切)?如果是這樣,這可能會加速處理長頁面(開始時只有很少的PHP代碼)(__halt_compiler();作爲最後一行),或PHP包含的純HTML頁面(將<?php __halt_compiler();?>添加爲第一行) 。 – FrancescoMM 2012-11-30 11:44:46
我相信你所要做的只是編寫return 0;
(或任何其他值),PHP將停止解析這個文件並返回給它調用的任何東西。當您需要在一個文件中停止執行,但不想完全使用die()
或exit()
時,此功能非常有用。
據我瞭解,它不會真的停止*解析*文件,但它會停止*當它到達'return'時執行* – 2015-03-13 13:29:39
好吧我會咬...我很好奇,你爲什麼想要?你想要做什麼? – cletus 2009-12-01 02:29:26
你想輸出文件的其餘部分作爲原始文本? – SLaks 2009-12-01 02:30:17