sapi_windows_vt100_support

(PHP 7 >= 7.2.0, PHP 8)

sapi_windows_vt100_support获取或设置与 Windows 控制台输出缓冲区关联的指定流的 VT100 支持。

描述

sapi_windows_vt100_support(resource $stream, ?bool $enable = null): bool

如果 enablenull,则如果流 stream 已启用 VT100 控制代码,则函数返回 true,否则返回 false

如果 enablebool,则函数将尝试启用或禁用流 stream 的 VT100 功能。如果已成功启用(或禁用)该功能,则函数将返回 true,否则返回 false

在启动时,PHP 尝试启用 STDOUT/STDERR 流的 VT100 功能。顺便说一句,如果这些流重定向到文件,则 VT100 功能可能无法启用。

如果启用了 VT100 支持,则可以使用控制序列,就像从 VT100 终端中知道的那样。它们允许修改终端的输出。在 Windows 上,这些序列称为控制台虚拟终端序列。

警告

此函数使用在 Windows 10 API 中实现的 ENABLE_VIRTUAL_TERMINAL_PROCESSING 标志,因此 VT100 功能可能在旧版 Windows 版本上不可用。

参数

stream

函数将在其上操作的流。

enable

如果为 bool,则将启用(如果为 true)或禁用(如果为 false)VT100 功能。

返回值

如果 enablenull:如果启用了 VT100 功能,则返回 true,否则返回 false

如果 enablebool:成功时返回 true,失败时返回 false

变更日志

版本 描述
8.0.0 enable 现在可以为 null。

示例

示例 #1 sapi_windows_vt100_support() 默认状态

默认情况下,STDOUTSTDERR 已启用 VT100 功能。

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

以上示例将输出类似于以下内容


true false

示例 #2 sapi_windows_vt100_support() 更改状态

如果流被重定向,您将无法启用 STDOUTSTDERR 的 VT100 功能。

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.
添加注释

用户贡献注释

此页面没有用户贡献的注释。
To Top