$COLUMNS
und $LINES
wird wahrscheinlich nicht in Ihr Programm exportiert. Sie können export LINES COLUMNS
ausführen bevor Sie Ihre App ausführen, oder Sie können diese Informationen direkt abrufen:
$fp=popen("resize", "r");
$b=stream_get_contents($fp);
preg_match("/COLUMNS=([0-9]+)/", $b, $matches);$columns = $matches[1];
preg_match("/LINES=([0-9]+)/", $b, $matches);$rows = $matches[1];
pclose($fp);
Eine weitere Shell-Option, die kein Parsen erfordert, ist tput
:
$this->settings['screen']['width'] = exec('tput cols')
$this->settings['screen']['height'] = exec('tput lines')
Ich weiß nicht, warum man jemals grep
brauchen sollte um stty
zu parsen Ausgabe:Es gibt eine separate Option, um "die Anzahl der Zeilen und Spalten gemäß dem Kernel" zu melden.
Einzeiler, keine Fehlerbehandlung:
list($rows, $cols) = explode(' ', exec('stty size'));
Einzeiler, bei Problemen beide Zeilen/Spalten auf 0 setzen und eventuelle Fehlerausgaben unterdrücken:
list($rows, $cols) = explode(' ', @exec('stty size 2>/dev/null') ?: '0 0');
Verwenden Sie den PHP ncurses_getmaxyx
Funktion.
ncurses_getmaxyx (STDSCR, $Height, $Width)
BISHER:
http://php.net/manual/en/function.getenv.php
$cols = getenv('COLUMNS');
$rows = getenv('ROWS');
Der "richtige" Weg ist wahrscheinlich, TIOCGSIZE
aufzurufen ioctl, um die Vorstellung des Kernels von der Fenstergröße zu erhalten, oder rufen Sie den Befehl stty -a
auf und analysieren Sie die Ergebnisse für rows
und columns