ฟังก์ชัน preg_last_error
ฟังก์ชัน preg_last_error ส่งกลับรหัสข้อผิดพลาดล่าสุด
ที่เกิดขึ้นระหว่างการทำงานกับฟังก์ชันที่ใช้สำหรับนิพจน์ทั่วไป
สิ่งนี้มีประโยชน์สำหรับการดีบักนิพจน์ทั่วไป เมื่อฟังก์ชัน
เช่น preg_match หรือ preg_replace ส่งกลับ false
ฟังก์ชันนี้ไม่รับพารามิเตอร์
ฟังก์ชันส่งกลับรหัสข้อผิดพลาดเป็นจำนวนเต็ม เพื่อความสะดวก สามารถเปรียบเทียบรหัสข้อผิดพลาด กับค่าคงที่พิเศษ (ดูตารางด้านล่าง)
ไวยากรณ์
preg_last_error(): int;
ตารางค่าคงที่ข้อผิดพลาด
| ค่าคงที่ | ค่า | คำอธิบาย |
|---|---|---|
PREG_NO_ERROR |
0 | ไม่มีข้อผิดพลาดเกิดขึ้น |
PREG_INTERNAL_ERROR |
1 | ข้อผิดพลาดภายในของ PCRE |
PREG_BACKTRACK_LIMIT_ERROR |
2 | เกินขีดจำกัดการย้อนรอย (backtrack limit) |
PREG_RECURSION_LIMIT_ERROR |
3 | เกินขีดจำกัดการเรียกซ้ำ |
PREG_BAD_UTF8_ERROR |
4 | ข้อมูล UTF-8 ไม่ถูกต้อง |
PREG_BAD_UTF8_OFFSET_ERROR |
5 | ออฟเซ็ตไม่ตรงกับจุดเริ่มต้นของรหัส UTF-8 ที่ถูกต้อง |
PREG_JIT_STACKLIMIT_ERROR |
6 | เกินขีดจำกัดสแตกของคอมไพเลอร์ JIT |
ตัวอย่าง
ตรวจสอบข้อผิดพลาดหลังจากนิพจน์ทั่วไปที่ไม่ถูกต้อง:
<?php
preg_match('/invalid(regex/', 'test');
$error_code = preg_last_error();
echo $error_code;
?>
ผลลัพธ์ของการดำเนินการโค้ด:
4
ตัวอย่าง
การใช้กับค่าคงที่ข้อผิดพลาด PCRE:
<?php
preg_match('/(?:\D+/', 'abc123');
if (preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR) {
echo 'Backtrack limit was exhausted';
}
?>
ผลลัพธ์ของการดำเนินการโค้ด:
'Backtrack limit was exhausted'
ดูเพิ่มเติม
-
ฟังก์ชัน
preg_match,
ซึ่งทำการค้นหาตามนิพจน์ทั่วไป -
ฟังก์ชัน
preg_replace,
ซึ่งทำการแทนที่ตามนิพจน์ทั่วไป -
ฟังก์ชัน
preg_quote,
ซึ่งทำการหนีอักขระพิเศษในนิพจน์ทั่วไป