ดังที่ฉันกล่าวถึงในคำตอบ lyceus รหัสของเขาจะล้มเหลวใน Windows ที่ไม่ใช่ภาษาอังกฤษเพราะผลลัพธ์ของmode
อาจไม่ประกอบด้วยสตริง "คอลัมน์" หรือ "บรรทัด" substrings:
คุณสามารถค้นหาสตริงย่อยที่ถูกต้องโดยไม่ต้องค้นหาข้อความ:
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'];
ลองทดสอบดูเพราะฉันไม่ได้ทดสอบ