Функция 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функцияси,
регуляр ифодалардаги махсус белгиларни экранизация қилади