终端应用程序上带有 readline 的奇怪字符
Strange char with readline on terminal app
我正在编写 php-console 应用程序,其中 readline 用于用户输入命令。
我是这样使用它的:
$input = readline("3$label3\n");
在 cmd 终端中看起来像这样:
但是在 vscode 中使用同一个终端,这个问号是不可见的。当我删除颜色代码 ("\033", "\033") 时,它们就会消失。
我也在 cygwin 终端测试了这个应用程序,问号不可见,但在这个地方有两个 space 符号。
求助。
您需要根据所使用的终端仿真器输出正确的控制代码。在 xterm 模拟器中有效的可能不适用于 vt100 或 Windows 使用的任何东西。
- 您可以使用函数
stream_isatty(STDOUT)
来检测输出是否为终端。
- 您可以参考常量
PHP_OS_FAMILY
or PHP_OS
来检测您当前 运行 的 OS。
- 在 linux [或等效仿真器,如 cygwin] 上,您可以参考环境变量
$_ENV['TERM']
以确定正在使用哪个终端仿真器。
根据这三条信息,您可以确定是否使用“花式”输出格式,并输出适合给定终端仿真器的控制代码。
我正在编写 php-console 应用程序,其中 readline 用于用户输入命令。
我是这样使用它的:
$input = readline("3$label3\n");
在 cmd 终端中看起来像这样:
但是在 vscode 中使用同一个终端,这个问号是不可见的。当我删除颜色代码 ("\033", "\033") 时,它们就会消失。
我也在 cygwin 终端测试了这个应用程序,问号不可见,但在这个地方有两个 space 符号。
求助。
您需要根据所使用的终端仿真器输出正确的控制代码。在 xterm 模拟器中有效的可能不适用于 vt100 或 Windows 使用的任何东西。
- 您可以使用函数
stream_isatty(STDOUT)
来检测输出是否为终端。 - 您可以参考常量
PHP_OS_FAMILY
orPHP_OS
来检测您当前 运行 的 OS。 - 在 linux [或等效仿真器,如 cygwin] 上,您可以参考环境变量
$_ENV['TERM']
以确定正在使用哪个终端仿真器。
根据这三条信息,您可以确定是否使用“花式”输出格式,并输出适合给定终端仿真器的控制代码。