PHP 检测当前标准输出是否支持 ANSI 转义字符

PHP Detect if current stdout support ANSI escape chars

让我们有以下脚本:

echo "Hello world\e[5Dmoon!";

使用 PHP_SAPI 我能够确定脚本是 运行 在 CLI 上还是在 WEB 上。

如果从命令行执行脚本,它将输出Hello moon!。但是脚本的输出可以转发到例如文本文件,例如 php test.php > output.txt。如果转发输出,转义字符将不起作用,输出将是 Hello world^[[5Dmoon.

如何确定当前标准输出是否支持 ANSI 转义字符,以避免不支持此功能的“垃圾邮件”输出?

您搜索的函数应该是stream_isatty(STDOUT)

它 returns 为您的用例提供正确的值 - 网络错误,终端正确,TXT 输出错误。