Seperti yang saya sebutkan dalam jawaban lyceus, kodenya akan gagal pada Windows lokal non-Inggris karena output dari mode
mungkin tidak mengandung substring "kolom" atau "garis":
Anda dapat menemukan substring yang benar tanpa mencari teks:
preg_match('/---+(\n[^|]+?){2}(?<cols>\d+)/', `mode`, $matches);
$cols = $matches['cols'];
Perhatikan bahwa saya bahkan tidak peduli dengan garis karena tidak dapat diandalkan (dan saya sebenarnya tidak peduli dengan mereka).
Sunting: Menurut komentar tentang Windows 8 (oh Anda ...), saya pikir ini mungkin lebih dapat diandalkan:
preg_match('/CON.*:(\n[^|]+?){3}(?<cols>\d+)/', `mode`, $matches);
$cols = $matches['cols'];
Tapi cobalah mengujinya, karena saya tidak mengujinya.