Php якоря

За замовчуванням, поза символьного класу метасимвол початку рядка (^) відповідає початку оброблюваних даних (якщо не використовуються модифікатори). Усередині символьного класу він (^) має зовсім інше значення.

Метасимвол початку рядка (^) не зобов'язаний бути першим символом шаблону в разі, якщо в шаблоні використовуються кілька альтернатив, але повинен бути першим символом в кожній з альтернатив, в якій він зустрічається, якщо шаблон коли-небудь можна порівняти з відповідною гілкою. Якщо все альтернативи починаються з метасимвола початку рядка (^), то шаблон обмежений для збігу виключно на початку рядка, кажуть що шаблон "заякорити". (Існують і інші способи "заякорити" шаблон).

Відповідними метасимволами кінця рядка (знак долара, $) досягається тільки в кінці рядка або безпосередньо перед останнім символом у випадку, якщо їм є переведення рядка (якщо модифікатори не вказані). Метасимвол кінця рядка ($) не зобов'язаний бути останнім символом шаблону в разі, якщо використовується кілька альтернатив, але повинен бути останнім символом в кожній альтернативі, в якій він фігурує. Усередині символьного класу символ # '$ #' Не має спеціального значення.

Поведінка метасимвола кінця рядка може бути змінено за допомогою модифікатора PCRE_DOLLAR_ENDONLY так, щоб він відповідав виключно кінця рядка. Даний прапор ніяк не стосується спеціальної послідовності \ Z.

Значення метасимволов початку і кінця рядка змінюється в разі, якщо використовується модифікатор PCRE_MULTILINE. В такому випадку, крім збігів на початку або в кінці рядка, метасимволу # '^ #' І # '$ #' Відповідають позиції безпосередньо після символу перекладу рядка "\ n". Наприклад, шаблон / ^ abc $ / зустрічається в рядку "def \ nabc" в багаторядковому режимі і не зустрічається в нормальному режимі. Таким чином, шаблон який "заякорити" в однорядковому режимі, всі гілки якого, починаються з "^", нічого очікувати бути "заякоренних" в багаторядковому режимі. Модифікатор PCRE_DOLLAR_ENDONLY ігнорується в разі, якщо модифікатор встановлений PCRE_MULTILINE.

Слід зауважити, що службові послідовності \ A, \ Z і \ z можуть використовуватися для зіставлення з початком або кінцем рядка в обох режимах. І якщо всі гілки шаблону починаються з \ A, шаблон буде "заякорити" незалежно від присутності модифікатора PCRE_MULTILINE.

User Contributed Notes 1 note

Схожі статті