Регулярные выражения в PHP

Регулярные выражения в PHP Зачем нужны регулярные выражения в PHP, примеры использования.

Регулярное выражение - это формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов.

wikipedia.org

В народе: регэкспы, регулярки.

По-простому - это выражения для поиска и замены подстроки по шаблону.

В PHP используется название PCRE (Perl Compatible Regular Expressions -
перл совместимые регулярные выражения).

Подробнее хорошо разбирается - http://www.skillz.ru/dev/php/article-Regulyarnye_vyrazheniya_dlya_chaynikov.html

Таблица метасимволов

Метасимвол Значение
\d Цифра (0-9)
\D Не цифра (любой символ кроме символов 0-9).
\s Пустой символ (обычно пробел и символ табуляции).
\S Непустой символ (все, кроме символов, определяемых метасимволом \s).
\w Все буквы, все цифры и знак подчеркивания (‘_’).
\W Все, кроме символов, определяемых метасимволом \w.
\n Символ перевода строки.
\r Символ возврата каретки.
\t Символ табуляции
\xhh Вставка символа с шестнадцатиричным кодом 0xhh, например \x41 вставит латинскую букву ‘A’.
^ Начало строки.
$ Конец строки.
| Метасимвол выбора.
* Ноль или более символов.
+ Одно или более символов.
? Встречается один раз, либо ноль.
{} Квантификатор, указывает количество повторений метасимволов. {4,6} (От 4 до 6 повторений).
\A Начало строки.
\Z Конец строки.
\z Конец текста.
\b Граница слова.
\B Не граница слова.
\G Предыдущий успешный поиск.

 

Таблица модификаторов

 
Модификатор Описание
i Шаблон становится регистронезависимым
m Метасимволы ‘^’ и ‘$’ указывают на начало и конец каждой строки а не всего текста.
s Метасимвол ‘.’ включает в свое определение перевод строки.
u Делает все количественные метасимволы “не жадными” .

 

Таблица примитивных полезных шаблонов

Шаблон Описание
[0-9A-Fa-f] Цифра в шестнадцатеричной системе счисления.
[02468] Четная цифра.
[^\d] Все, кроме цифр.
/\d\d\d/ Трехзначное число.
[^-0-9] Любой символ, кроме минуса и цифры.
/^[a-zA-Z0-9]+$/ Строка состоящая только из букв латинского алфавита и цифр.
[^\s] Все что не пробел.
[^\s.] Все что не пробел и не точка.
foo$ Строка заканчивается на “foo”.
(gif|jpg) Означает как “gif” так и “jpeg”.
^[a-zA-Z0-9_]{1,}$ Любое слово, хотя бы одна буква, число или “_”.
(^A-Za-z0-9) Любой символ (не число и не буква).
/b(word)b/ выбор из строки слова “word”.

 

Таблица сложных и полезных шаблонов

Шаблон Описание
/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?/i Проверка доменного имени.
/A(?=[-_a-zA-Z0-9]*?[A-Z])(?=[-_a-zA-Z0-9]*?[a-z])(?=[-_a-zA-Z0-9]*?[0-9])[-_a-zA-Z0-9]{6,}z/ Комплексная проверка пароля. Строка не менее шести символов, цифры, дефисы и подчеркивания, как минимум один символ верхнего регистра, один нижнего регистра и одна цифра.
[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\ .A-Za-z0-9]{2,} Проверка правильности email.
/<title>(.*)</title>/ Поиск заголовка страницы.
^\d{1,2}([-. /])\d{1,2}\1\d{2,4}$ Разбиваем дату на числа.
(?:8|\+7)? ?\(?(\d{3})\)? ?(\d{3})[ -]?(\d{2})[ -]?(\d{2}) Номер мобильного телефона.
/.*?\./ Получить расширение файла.
/\.(?:exe|msi|dmg|bin|xpi|iso)$/i Проверка расширения файла.
/<a [^<>]*href=[\'"]([^\'"]+)[\'"][^<>]*>(((?!/si Внешние ссылки.
/^[0-9]{1,55}$/ Является ли строка числом до 55 цифр.
/([a-zA-Zа-яА-Я]+)/ Разбирает текст на отдельные слова.
/^.{1,10}$/ Любая строка, содержащая от 1 до 10 символов.
/<b>(.*)</b>/ Произвольная последовательность символов, заключенная между тегами.

 

Пример регулярного выражения в php

Пример проверки e-mail с помощью регулярных выражений. Очень часто появляется потребность использовать вот такую проверку:

function email_check($email) {
if (!preg_match("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i",trim($email)))
{
return false;
}
else return true;
}
 

Ещё про регулярные выражения - http://htmlweb.ru/php/php_regexp.php

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.