Чтобы сделать это в среде CLI Windows, лучший способ найти это - использовать команду mode и проанализировать вывод.
function getTerminalSizeOnWindows() {
$output = array();
$size = array('width'=>0,'height'=>0);
exec('mode',$output);
foreach($output as $line) {
$matches = array();
$w = preg_match('/^\s*columns\:?\s*(\d+)\s*$/i',$line,$matches);
if($w) {
$size['width'] = intval($matches[1]);
} else {
$h = preg_match('/^\s*lines\:?\s*(\d+)\s*$/i',$line,$matches);
if($h) {
$size['height'] = intval($matches[1]);
}
}
if($size['width'] AND $size['height']) {
break;
}
}
return $size;
}
Надеюсь, это полезно!
ПРИМЕЧАНИЕ. Возвращаемая высота - это количество строк в буфере, а не количество строк, которые видны внутри окна. Какие-нибудь лучшие варианты там?