有没有什么办法让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