Hàm preg_last_error

Hàm preg_last_error trả về mã lỗi cuối cùng, xảy ra khi làm việc với các hàm xử lý biểu thức chính quy. Điều này hữu ích cho việc gỡ lỗi biểu thức chính quy, khi các hàm như preg_match hoặc preg_replace trả về false. Hàm không nhận tham số.

Hàm trả về mã lỗi dạng số nguyên. Để thuận tiện, có thể so sánh mã lỗi với các hằng số đặc biệt (xem bảng dưới đây).

Cú pháp

phppreg_last_error(): int;

Bảng các hằng số lỗi

Hằng số Giá trị Mô tả
PREG_NO_ERROR 0 Không xảy ra lỗi
PREG_INTERNAL_ERROR 1 Lỗi nội bộ PCRE
PREG_BACKTRACK_LIMIT_ERROR 2 Vượt quá giới hạn backtrack
PREG_RECURSION_LIMIT_ERROR 3 Vượt quá giới hạn đệ quy
PREG_BAD_UTF8_ERROR 4 Dữ liệu UTF-8 không hợp lệ
PREG_BAD_UTF8_OFFSET_ERROR 5 Độ lệch không tương ứng với điểm bắt đầu của một mã UTF-8 hợp lệ
PREG_JIT_STACKLIMIT_ERROR 6 Vượt quá giới hạn ngăn xếp của trình biên dịch JIT

Ví dụ

Kiểm tra lỗi sau một biểu thức chính quy không hợp lệ:

php<?php
  preg_match('/invalid(regex/', 'test');
  $error_code = preg_last_error();
  echo $error_code;
?>

Kết quả thực thi mã:

php4

Ví dụ

Sử dụng với các hằng số lỗi PCRE:

php<?php
  preg_match('/(?:\D+/', 'abc123');
  if (preg_last_error() === PREG_BACKTRACK_LIMIT_ERROR) {
    echo 'Backtrack limit was exhausted';
  }
?>

Kết quả thực thi mã:

php'Backtrack limit was exhausted'

Xem thêm

  • hàm preg_match,
    thực hiện tìm kiếm theo biểu thức chính quy
  • hàm preg_replace,
    thực hiện thay thế theo biểu thức chính quy
  • hàm preg_quote,
    thoát các ký tự đặc biệt trong biểu thức chính quy