PHP 8.3.4 Released!

sapi_windows_vt100_support

(PHP 7 >= 7.2.0, PHP 8)

sapi_windows_vt100_supportПолучить или установить поддержку VT100 для заданного потока, связанного с буфером вывода консоли Windows

Описание

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

Если параметр enable равен null, функция возвращает true или false в зависимости от того, разрешены или нет управляющие последовательности VT100 для stream

Если параметр enable является логическим значением (bool), функция попытается включить или выключить функциональность VT100 для потока stream. В этом случае функция вернёт true или false в зависимости от успешности выполнения.

При старте, PHP пытается включить VT100 для потоков STDOUT и STDERR. Но если, например, эти потоки перенаправлены в файл, то поддержка VT100 может не включиться.

Если включена поддержка VT100, то можно использовать управляющие последовательности, так как они известны терминалу. Они позволяют изменять вывод терминала. В Windows эти последовательности известны как "Console Virtual Terminal Sequences".

Внимание

Эта функция использует реализацию флага ENABLE_VIRTUAL_TERMINAL_PROCESSING в Windows 10 API, следовательно функциональность VT100 может быть недоступна в более старых версиях Windows.

Список параметров

stream

Поток, с которым будет работать функция.

enable

Если является логическим значением (bool), то должно быть либо true, либо false, для включения и отключения VT100 соответственно.

Возвращаемые значения

Если параметр enable равен null, функция возвращает true или false в зависимости от того, разрешены или нет управляющие последовательности VT100

Если параметр enable является логическим значением (bool): Возвращает true в случае успешного выполнения или false в случае ошибки.

Список изменений

Версия Описание
8.0.0 enable теперь допускает значение null.

Примеры

Пример #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

Вывод приведённого примера будет похож на:


true false

Пример #2 Изменение состояния с помощью sapi_windows_vt100_support()

Вы не можете включить поддержку VT100 для STDOUT или STDERR если эти потоки перенаправлены.

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");
// Вставляет один пробел, сдвигая существующий текст вправо -> Просто забыли букву.
fwrite($out, "\033[1@");
fwrite($out, 'e');
?>

Результат выполнения приведённого примера:

Just forgot a letter.
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top