Wie man linux-Konsole $SPALTEN und $ZEILEN aus PHP-cli?
Ich bin derzeit die Schaffung eines neuen neat-CLI-Bibliothek für PHP, und ich möchte, um herauszufinden, die Breite/Höhe der Konsole läuft es in.
Habe ich versucht, viele Dinge, wie das Graben durch $_ENV, exec("echo $SPALTEN"), etc, aber kein Ergebnis, wenn ich tippe echo $SPALTEN und $ZEILEN in der bash-Kommandozeile, es ordentlich zeigt den Wert.
Was muss ich tun, um auf diesen Wert zugreifen von PHP?
Ich mit .sh-Skripts wie diesem:
#!/usr/bin/php -q
<?php
require_once('lib.commandline.php');
class HelloWorld extends CommandLineApp {
public function main($args) {
echo('O, Hai.');
}
}
Update
Endgültige Lösung:
public function getScreenSize() {
preg_match_all("/rows.([0-9]+);.columns.([0-9]+);/", strtolower(exec('stty -a |grep columns')), $output);
if(sizeof($output) == 3) {
$this->settings['screen']['width'] = $output[1][0];
$this->settings['screen']['height'] = $output[2][0];
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anderen shell-option, erfordert keine Analyse ist
tput
:tput
während Sie Graben, wie Sie nur die Infos ausstty
.mode con /status
.Verwenden Sie die PHP
ncurses_getmaxyx
Funktion.BISHER:
http://php.net/manual/en/function.getenv.php
Den "richtigen" Weg ist wohl zu nennen, die
TIOCGSIZE
ioctl, um die kernel-Idee, die Größe des Fensters oder rufen Sie den Befehlstty -a
und analysieren Sie die Ergebnisse fürrows
undcolumns
$COLUMNS
und$LINES
ist wahrscheinlich nicht exportiert Ihr Programm. Sie können laufenexport LINES COLUMNS
vor dem ausführen Ihrer Anwendung, oder Sie können diese Informationen direkt:Vielleicht link könnte die Antwort sein, Sie könnte verwenden Sie die ANSI-Escape-codes zu tun, dass durch die Nutzung der
echo
mithilfe der speziellen Escape-code-Sequenz, insbesondere der 'Query-Gerät", das ich fand einen anderen link hier, das erklärt im detail. Vielleicht verwenden könnte, mit denen man die Spalten und Zeilen des Bildschirms...Ich weiß auch nicht, warum sollte man jemals brauchen
grep
zu analysierenstty
Ausgang: es ist eine separate option zum Bericht "die Anzahl der Zeilen und Spalten entsprechend des Kernels".One-liner, keine Fehlerbehandlung:
One-liner, übernehmen die beiden Zeilen/Spalten zu 0 im Falle von Problemen und unterdrücken Sie keine Fehler Ausgabe:
Umgebungsvariablen finden Sie in der $_ENV super Globale variable.
zum Beispiel.