(PHP 7 >= 7.2.0, PHP 8)
sapi_windows_vt100_support — Windows コンソールの出力バッファに関連付けられたストリームのVT100サポート状況を取得/設定する
$stream
, ?bool $enable
= null
): bool
enable
が省略されるか、null
の場合、
この関数は stream
の VT100 制御コードが有効になっている場合に true
を返します。
無効になっている場合 false
を返します。
enable
が指定され、bool の場合、
この関数は stream
の VT100 の機能を 有効/無効 にしようとします。
VT100 の機能が無事有効(または無効)にできた場合、この関数は true
を返します。
失敗した場合 false
を返します。
起動時に、PHP は STDOUT
/STDERR
の VT100 の機能を有効にしようとします。これらのストリームがファイルにリダイレクトされると、VT100 の機能は有効にならないかもしれません。
VT100 のサポートが有効な場合、VT100 のターミナルで有効な制御シーケンスが使えます。 これによって、ターミナルの出力を変更できます。Windows では、 これらの制御シーケンスは Console Virtual Terminal Sequence と呼ばれています。
この関数は、Windows 10 API で実装されている
ENABLE_VIRTUAL_TERMINAL_PROCESSING
フラグを使います。
よって、古いWindowsバージョンでは VT100の機能は有効にならないかもしれません。
stream
この関数で操作するストリーム
enable
bool を指定すると、
(true
の場合) VT100の機能が有効になり、
(false
の場合) 無効になります。
enable
が省略されるか、null
の場合、
VT100 の機能が有効になっている場合に true
を返します。
無効になっている場合 false
を返します。
enable
に bool を指定すると、
成功した場合に true
を、失敗した場合に false
を返します。
バージョン | 説明 |
---|---|
8.0.0 |
enable は、nullable になりました。
|
例1 sapi_windows_vt100_support() でデフォルトの状態を出力する
デフォルトでは、
STDOUT
/ STDERR
で 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
上の例の出力は、 たとえば以下のようになります。
例2 sapi_windows_vt100_support() で状態を変更する
ストリームがリダイレクトされた場合、
STDOUT
や STDERR
の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.');
// カーソルを2文字分左に移動
fwrite($out, "\033[2D");
// 空白をひとつ分挿入し、既存のテキストを右に移動させる -> Just forgot a lett r.
fwrite($out, "\033[1@");
fwrite($out, 'e');
?>
上の例の出力は以下となります。
Just forgot a letter.