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 输出错误。
让我们有以下脚本:
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 输出错误。