Lyceus cevapta belirtildiği gibi, kodu İngilizce olmayan yerel Windows üzerinde başarısız olacaktır, çünkü daha sonra çıktı mode"sütun" veya "satır" alt dizeleri içermeyebilir:

Metin aramadan doğru alt dizeyi bulabilirsiniz:
preg_match('/---+(\n[^|]+?){2}(?<cols>\d+)/', `mode`, $matches);
$cols = $matches['cols'];
Çizgilerle bile uğraşmadığımı unutmayın, çünkü güvenilmez (ve aslında onları umursamıyorum).
Düzenleme: Windows 8 hakkındaki yorumlara göre (oh ...), bunun daha güvenilir olabileceğini düşünüyorum:
preg_match('/CON.*:(\n[^|]+?){3}(?<cols>\d+)/', `mode`, $matches);
$cols = $matches['cols'];
Yine de test et, çünkü ben test etmedim.