기타 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를 반환합니다.

enable이 bool이면 이 함수는 스트림 stream의 VT100 기능을 활성화하거나 비활성화하려고 시도합니다. 함수가 성공적으로 활성화(또는 비활성화)되면 함수는 true를 반환하고 그렇지 않으면 false를 반환합니다.

시작 시 PHP는 STDOUT/STDERR 스트림의 VT100 기능을 활성화하려고 시도합니다. 그런데 이러한 스트림이 파일로 리디렉션되면 VT100 기능이 활성화되지 않을 수 있습니다.

VT100 지원이 활성화되면 VT100 터미널에서 알려진 대로 제어 시퀀스를 사용할 수 있습니다. 터미널의 출력을 수정할 수 있습니다. Windows에서 이러한 시퀀스를 콘솔 가상 터미널 시퀀스라고 합니다.

경고 이 함수는 Windows 10 API에서 구현된 ENABLE_VIRTUAL_TERMINAL_PROCESSING 플래그를 사용하므로 VT100 기능은 이전 Windows 버전에서 사용하지 못할 수 있습니다.


매개변수

stream
함수가 작동할 스트림입니다.
enable
bool이면 VT100 기능이 활성화되거나(true인 경우) 비활성화됩니다(false인 경우).

반환 값

enablenull인 경우: VT100 기능이 활성화되면 true를 반환하고 그렇지 않으면 false를 반환합니다.

enable이 bool인 경우: 성공하면 true를, 실패하면 false를 반환합니다.


변경 로그

버전 설명
8.0.0 enable은 이제 null을 허용합니다.

Examples

예제 #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() 상태 변경

스트림이 리디렉션되면 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.');
// Moves the cursor two characters backwards
fwrite($out, "\033[2D");
// Inserts one blank, shifting existing text to the right -> Just forgot a lett r.
fwrite($out, "\033[1@");
fwrite($out, 'e');
?>
                  
                

위의 예는 다음을 출력합니다.

Just forgot a letter.