$COLUMNS
a $LINES
se pravděpodobně neexportuje do vašeho programu. Můžete spustit export LINES COLUMNS
před spuštěním aplikace, nebo můžete tyto informace získat přímo:
$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);
Další možností shellu, která nevyžaduje analýzu, je tput
:
$this->settings['screen']['width'] = exec('tput cols')
$this->settings['screen']['height'] = exec('tput lines')
Nevím, proč by člověk měl někdy potřebovat grep
analyzovat stty
výstup:má samostatnou možnost hlásit "počet řádků a sloupců podle jádra".
One-liner, bez chybového zpracování:
list($rows, $cols) = explode(' ', exec('stty size'));
Jednořádkový, v případě problémů předpokládejte, že oba řádky/sloupce jsou 0 a potlačte jakýkoli chybový výstup:
list($rows, $cols) = explode(' ', @exec('stty size 2>/dev/null') ?: '0 0');
Použijte PHP ncurses_getmaxyx
funkce.
ncurses_getmaxyx (STDSCR, $Height, $Width)
PŘEDCHOZÍ:
http://php.net/manual/en/function.getenv.php
$cols = getenv('COLUMNS');
$rows = getenv('ROWS');
"Správným" způsobem je pravděpodobně zavolat TIOCGSIZE
ioctl, abyste získali představu jádra o velikosti okna, nebo zavolejte příkaz stty -a
a analyzujte výsledky pro rows
a columns