PHP CLI: Wie liest man ein einzelnes Zeichen der Eingabe vom TTY (ohne auf die Enter-Taste zu warten)?

Möchte ich Lesen, ein einzelnes Zeichen, at-a-time " von der Befehlszeile aus in PHP, aber es scheint, als gäbe es irgendeine Art von input Pufferung von irgendwo, dies zu verhindern.

Betrachten Sie diesen code:

#!/usr/bin/php
<?php
echo "input# ";
while ($c = fread(STDIN, 1)) {
    echo "Read from STDIN: " . $c . "\ninput# ";
}
?>

Suchbegriff "foo" als input (und die EINGABETASTE drücken), wird der Ausgang bin ich immer:

input# foo
Read from STDIN: f
input# Read from STDIN: o
input# Read from STDIN: o
input# Read from STDIN: 

input# 

Den Ausgang bin ich erwartet ist:

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# 

(Das heißt, mit Zeichen, die gelesen und verarbeitet werden, wie Sie eingegeben werden).

Derzeit allerdings, jedes Zeichen wird nur gelesen, nachdem die EINGABETASTE gedrückt wird. Ich habe den Verdacht das TTY ist die Pufferung der Eingabe.

Letztlich will ich Lesen zu können, drücken von Tasten wie OBEN, UNTEN, etc.

Vielen Dank im Voraus!

InformationsquelleAutor der Frage dansimau | 2010-09-10

Schreibe einen Kommentar