(PHP 7 >= 7.2.0, PHP 8)
sapi_windows_vt100_support — 取得或設定與 Windows 控制台輸出緩衝區關聯的指定資料流的 VT100 支援。
如果 enable
為 null
,則此函式會傳回 true
(如果串流 stream
已啟用 VT100 控制碼),否則傳回 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.