$COLUMNS
dan $LINES
mungkin tidak diekspor ke program Anda. Anda dapat menjalankan export LINES COLUMNS
sebelum menjalankan aplikasi Anda, atau Anda bisa mendapatkan informasi ini secara langsung:
$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);
Opsi shell lain yang tidak memerlukan penguraian adalah tput
:
$this->settings['screen']['width'] = exec('tput cols')
$this->settings['screen']['height'] = exec('tput lines')
Entahlah, mengapa seseorang harus membutuhkan grep
untuk mengurai stty
keluaran:ia memiliki opsi terpisah untuk melaporkan "jumlah baris dan kolom menurut kernel".
One-liner, tidak ada penanganan kesalahan:
list($rows, $cols) = explode(' ', exec('stty size'));
One-liner, asumsikan kedua baris/kolom menjadi 0 jika terjadi masalah dan sembunyikan keluaran kesalahan apa pun:
list($rows, $cols) = explode(' ', @exec('stty size 2>/dev/null') ?: '0 0');
Gunakan PHP ncurses_getmaxyx
fungsi.
ncurses_getmaxyx (STDSCR, $Height, $Width)
SEBELUMNYA:
http://php.net/manual/en/function.getenv.php
$cols = getenv('COLUMNS');
$rows = getenv('ROWS');
Cara yang "tepat" mungkin adalah dengan memanggil TIOCGSIZE
ioctl untuk mendapatkan ide kernel tentang ukuran jendela, atau panggil perintah stty -a
dan uraikan hasilnya untuk rows
dan columns