【发布时间】:2020-11-19 12:04:51
【问题描述】:
让我们有以下脚本:
echo "Hello world\e[5Dmoon!";
使用PHP_SAPI 我能够确定脚本是在 CLI 上还是在 WEB 上运行。
如果从命令行执行脚本,它将输出Hello moon!。但是脚本的输出可以转发到例如文本文件,例如php test.php > output.txt。如果输出被转发,转义字符将不起作用,输出将为Hello world^[[5Dmoon。
如何确定当前标准输出是否支持 ANSI 转义字符,以避免不支持的“垃圾邮件”输出?
【问题讨论】:
-
使用
php test.php > output.txt,您仍在写入标准输出。将该缓冲区的内容传递到文本文件中,之后才会使用> output.txt部分。 -
这就是 Symfony 控制台的工作方式:github.com/symfony/console/blob/…
标签: php stdout ansi-escape