PHP Conference Japan 2024

sapi_windows_vt100_support

(PHP 7 >= 7.2.0, PHP 8)

sapi_windows_vt100_support取得或設定與 Windows 控制台輸出緩衝區關聯的指定資料流的 VT100 支援。

說明

sapi_windows_vt100_support(資源 $stream, ?布林值 $enable = null): 布林值

如果 enablenull,則此函式會傳回 true(如果串流 stream 已啟用 VT100 控制碼),否則傳回 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