Вслед за предыдущей частью , это скорее перерыв — обзор синтаксиса регулярных выражений, замеченный до сих пор, и несколько ссылок после обратной связи.
Читает
Сначала вы должны проверить клинику Андрея Regex (слайды / pdf) — даже если вы не получите всего этого, это стоит того, чтобы фотографии с самого начала;) Это Андрей, как в Zmievski , как в работах в Yahoo , может быть Обвиняемый в Smarty и PHP-GTK , один из тех, кому нужно поблагодарить, когда PHP6 (с Unicode) выходит на улицы и, давным-давно, даже взял интервью у Sitepoint .
Разговор Андрея также побуждает меня к признанию: я не компетентен, чтобы рассказать вам о теории регулярных выражений (если вам интересно, начните здесь и Google для большего — или раздражайте этих парней ) — я исхожу с практической точки зрения поэтому, хотя эти блоги (будем надеяться) помогут вам обнаружить регулярные выражения как полезный инструмент, не ждите, что вы сможете написать собственный движок регулярных выражений.
Другое прочтение, специфичное для экранирования регулярных выражений и типов дыр в безопасности, с которыми вы можете preg_replace()
при помощи preg_replace()
, — это объяснение Джеффа двух методов preg_replace (), экранирующих gotcha , которые описывают точную природу проблемы, плюс предоставляет решение для экранирования замещающих строк. ,
Накопительный синтаксис шпаргалка
Итак, переподготовка с терминологией «регулярных выражений».
- Разделители выражений: — отметьте начало и конец самого шаблона — обсуждается здесь и обратите внимание на актуальность
preg_quote()
— второго аргумента — здесь рассматривается. - Литералы: соответствуют реальным символам «один-к-одному», например буквенно-цифровые символы: pattern
/a/
соответствует «a» — пример здесь . - Модификаторы шаблона: — изменяют глобальное поведение механизма регулярных выражений и помещаются после второго разделителя выражений. Модификаторы шаблонов, которые вы видели до сих пор;
-
/i
— сопоставление «без учета регистра» — буквенные символы из алфавита, используемые в шаблоне, будут соответствовать нижнему или верхнему регистру в искомой строке — пример здесь .
Примечание: то, что я не упомянул до сих пор, это то, что это поведение может также зависеть от настроек локали вашего сервера, аналогично проблеме сw
— см. Примечание «Подробная перегрузка!» Здесь -
/e
— «preg_replace()
eval» дляpreg_replace()
— смотрите здесь, но обратите внимание на этот комментарий re: «eval is evil». -
/x
— «расширенный режим», позволяющий комментировать ваш шаблон — здесь кратко упоминается
-
- Классы символов: совпадают в терминах «многие-к-одному», т. Е. Класс символов в шаблоне может соответствовать одному из списка символов в искомой строке. Классы персонажей, которые вы видели до сих пор, являются встроенными в PCRE ;
-
w
— «символ слова» — в основном любая буква алфавита или цифры — обсуждается здесь -
W
— все остальное, что не является символом слова (пробел, пунктуация и т. Д.) — также обсуждается здесь -
.
(точка) — означает «что угодно» — соответствует любому символу (но предупреждение: символы перевода строки — особый случай, который я еще не рассмотрел) — пример здесь - … Или сделай сам, например
[a-zA-Z0-9_]
— пример здесь
-
- Квантификаторы: применяются к предыдущему символу (или метасимволу), чтобы изменить количество совпадений (они влияют на продолжительность сопоставления). Квантификаторы, которые вы видели до сих пор;
- Утверждения: наложить условие, которое должно быть выполнено для проведения матча, но не должно становиться частью самого матча. Метасимволы утверждения, которые вы уже видели;
-
^
— утверждает «начало строки» или начало искомой строки — обсуждается здесь . -
$
— указать «конец строки» или конец искомой строки — также рассматривается здесь . -
b
— устанавливает «границу слова» — точку, в которой один или несколько символов, совпадающих с символомw
(класс символов слова), встречает один или несколько символов, совпадающих с символомW
(класс символов, не состоящих из слов) — здесь рассматривается.
-
- Подшаблоны — позволяют группировать части шаблона, позволяя вам делать такие вещи, как «захватывать» их для
preg_replace()
и другие приятные вещи, которые мы еще не видели — обсуждаемые здесь . - Обратная
preg_quote()
— экранирующий символ, обсуждаемый здесь (плюс см. Обсуждениеpreg_quote()
)
Это все.