Như tôi đã đề cập trong câu trả lời của lyceus, mã của anh ta sẽ thất bại trên Windows không phải tiếng Anh vì khi đó đầu ra của mode
có thể không chứa các "cột" hoặc "dòng":
Bạn có thể tìm đúng chuỗi con mà không cần tìm văn bản:
preg_match('/---+(\n[^|]+?){2}(?<cols>\d+)/', `mode`, $matches);
$cols = $matches['cols'];
Lưu ý rằng tôi thậm chí không bận tâm đến các dòng vì nó không đáng tin cậy (và tôi thực sự không quan tâm đến chúng).
Chỉnh sửa: Theo nhận xét về Windows 8 (oh bạn ...), tôi nghĩ rằng điều này có thể đáng tin cậy hơn:
preg_match('/CON.*:(\n[^|]+?){3}(?<cols>\d+)/', `mode`, $matches);
$cols = $matches['cols'];
Mặc dù vậy, hãy kiểm tra nó vì tôi đã không kiểm tra nó.