使 PHP 在 CLI 上打开标签之前丢弃内联内容



所以。我有一个批处理文件。该批处理文件中是 PHP 代码。我遇到的"唯一"问题是"前导码"是在执行 PHP 时打印的。"@rem待命...">

示例批处理文件:

@rem Standby... <?php ob_start(); ?>
@echo off
echo Now in %comspec%
echo I am on %OS% with %NUMBER_OF_PROCESSORS% CPUs    
echo Now handing off to PHP...
php.exe -f "%~f0" -- %*
goto :eof
<?php ob_clean(); ob_end_flush(); 
print "Now in PHP ".PHP_VERSION.PHP_EOL;
print "All done!";

输出如下内容:

Now in C:WINDOWSsystem32cmd.exe
I am on Windows_NT with 4 CPUs
Now handing off to PHP...
@rem Standby... Now in PHP 7.1.0
All done!

我知道这是因为 PHP 解析器的性质,它考虑了应该显示的标签内联内容之外的任何内容。此脚本可以在我不能依赖 PHP 配置的环境中使用。

如何让 PHP 丢弃该内联内容?(不编辑配置(

PHP 7.1 on Win10

您只需要确保在配置级别打开输出缓冲,然后就不需要调用ob_start()。通过命令行参数通用地执行此操作非常简单。例:

@echo off
echo Now in %comspec%
echo I am on %OS% with %NUMBER_OF_PROCESSORS% CPUs    
echo Now handing off to PHP...
php.exe -d output_buffering=On -f "%~f0" -- %*
goto :eof
<?php ob_clean(); ob_end_flush(); 
print "Now in PHP ".PHP_VERSION.PHP_EOL;
print "All done!";

收益 率:

Now in C:WINDOWSsystem32cmd.exe
I am on Windows_NT with 4 CPUs
Now handing off to PHP...
Now in PHP 7.0.4
All done!

相关内容

  • 没有找到相关文章

最新更新