(PHP 7 >= 7.2.0, PHP 8)
sapi_windows_vt100_support — 获取或设置与 Windows 控制台输出缓冲区关联的指定流的 VT100 支持。
如果 enable
为 null
,则如果流 stream
已启用 VT100 控制代码,则函数返回 true
,否则返回 false
。
如果 enable
为 bool,则函数将尝试启用或禁用流 stream
的 VT100 功能。如果已成功启用(或禁用)该功能,则函数将返回 true
,否则返回 false
。
在启动时,PHP 尝试启用 STDOUT
/STDERR
流的 VT100 功能。顺便说一句,如果这些流重定向到文件,则 VT100 功能可能无法启用。
如果启用了 VT100 支持,则可以使用控制序列,就像从 VT100 终端中知道的那样。它们允许修改终端的输出。在 Windows 上,这些序列称为控制台虚拟终端序列。
此函数使用在 Windows 10 API 中实现的 ENABLE_VIRTUAL_TERMINAL_PROCESSING
标志,因此 VT100 功能可能在旧版 Windows 版本上不可用。
版本 | 描述 |
---|---|
8.0.0 |
enable 现在可以为 null。 |
示例 #1 sapi_windows_vt100_support() 默认状态
php -r "var_export(sapi_windows_vt100_support(STDOUT));echo ' ';var_export(sapi_windows_vt100_support(STDERR));"
以上示例将输出类似于以下内容
true true
顺便说一句,如果流被重定向,则 VT100 功能将不会被启用
php -r "var_export(sapi_windows_vt100_support(STDOUT));echo ' ';var_export(sapi_windows_vt100_support(STDERR));" 2>NUL
以上示例将输出类似于以下内容
示例 #2 sapi_windows_vt100_support() 更改状态
php -r "var_export(sapi_windows_vt100_support(STDOUT, true));echo ' ';var_export(sapi_windows_vt100_support(STDERR, true));" 2>NUL
以上示例将输出类似于以下内容
true false
示例 #3 VT100 支持启用示例用法
<?php
$out = fopen('php://stdout','w');
fwrite($out, 'Just forgot a lettr.');
// 将光标向后移动两个字符
fwrite($out, "\033[2D");
// 插入一个空格,将现有文本向右移 -> Just forgot a lett r.
fwrite($out, "\033[1@");
fwrite($out, 'e');
?>
以上示例将输出
Just forgot a letter.