PHP CLI:如何从TTY读取输入的单个字符(无需等待回车键)?
2022-08-30 15:34:42
我想从PHP中的命令行一次读取一个字符,但是似乎有某种来自某个地方的输入缓冲阻止了这一点。
请考虑以下代码:
#!/usr/bin/php
<?php
echo "input# ";
while ($c = fread(STDIN, 1)) {
echo "Read from STDIN: " . $c . "\ninput# ";
}
?>
输入“foo”作为输入(并按回车键),我得到的输出是:
input# foo
Read from STDIN: f
input# Read from STDIN: o
input# Read from STDIN: o
input# Read from STDIN:
input#
我期望的输出是:
input# f
input# Read from STDIN: f
input# o
input# Read from STDIN: o
input# o
input# Read from STDIN: o
input#
input# Read from STDIN:
input#
(即,在键入字符时读取和处理字符)。
但是,目前,每个字符仅在按回车键后被读取。我怀疑TTY正在缓冲输入。
最终,我希望能够读取按键,例如向上箭头,向下箭头等。