Як я вже згадував у відповіді ліцея, його код не працюватиме в не англійській мові Windows, оскільки тоді вихід mode
може не містити підрядків "стовпці" або "рядки":
Ви можете знайти правильну підрядку, не шукаючи тексту:
preg_match('/---+(\n[^|]+?){2}(?<cols>\d+)/', `mode`, $matches);
$cols = $matches['cols'];
Зауважте, що я навіть не турбуюся про лінії, тому що це ненадійно (і я насправді не хвилююся ними).
Редагувати: Відповідно до коментарів щодо Windows 8 (ой, ви ...), я думаю, що це може бути більш надійним:
preg_match('/CON.*:(\n[^|]+?){3}(?<cols>\d+)/', `mode`, $matches);
$cols = $matches['cols'];
Проте протестуйте це, бо я його не перевіряв.