Разработка магазинов с гарантией попадания в ТОП поисковых систем

Узнать подробнее
Eltisbook > PHP учебник > Регулярные выражения > Регулярные выражения в PHP

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

«Регулярные выражения в PHP » – двенадцатый урок учебника PHP. В этом уроке мы поговорим об использовании регулярных выражений в PHP.

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

Регулярные выражения в PHP позволяют производить поиск данных в соответствии с некоторым шаблоном. Помимо поиска можно использовать регулярные выражения внутри циклов для решения самых разнообразных задач, таки, как выборка из текста по параметру, сортировка данных, удаление определенных частей текста (символов) и т.д.

Область использования регулярных выражений в PHP достаточно широка. К примеру следующий код проверяет правильность ввода email адреса:

/^\w+([\.\w]+)*\w@\w((\.\w)*\w+)*\.\w{2,3}$/

Выглядит этот код крайне непонятно, как будто написан на каком–то инопланетном языке. Но спешу вас успокоить, что каждый символ РВ подчиняется упорядоченному набору правил, изучив которые любой из вас сможет самостоятельно пользоваться регулярными выражениями.

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

PHP имеет достаточно много функций работы со строками. Но ни одна из них ни дает таких широких возможностей, как регулярные выражения. Сейчас я приведу вам небольшой пример и вы поймете на что способны РВ.

Вы наверное замечали, что на многих сайтах email адрес указан без символа @. Связанно это с тем, что сейчас по просторам сети internet разгуливает множество роботов – пауков, в алгоритмах которых используются регулярные выражения, позволяющие роботам находить email адреса, форумы и гостевые книги, чтобы потом поместить их в специализированные базы, которые широко популярны в SEO среде.

Основные функции для работы с регулярными выражениями:

preg_match(pattern, string, [result, flags]) где:

Эти функции осуществляют поиск по шаблону и возвращают информацию о том, сколько раз произошло совпадение. Дляpreg_match() это 0 (нет совпадений) или 1, поскольку поиск прекращается, как только найдено первое совпадение. Функцияpreg_match_all() производит поиск до конца строки и поэтому находит все совпадения. Все точные совпадения содержатся в первом элементе массива result у каждой из этих функций (для preg_match_all() этот элемент – тоже массив).

Ниже вы можете видеть, как работает поиск по шаблону:

<?
$str = «Номер участкового: «.»33 – 22 – 44. Номер юриста: «.»222 – 44 – 55 или 323 – 22 – 33»;
$pattern = «/\d{3} – \d{2} – \d{2}/m»;
$matches = preg_match_all ($pattern,$str, $result);
for ($i=0;$i<$matches;$i++)
echo «Совпадение $i: «.$result[0][$i].»<br>»;
?>
Совпадение 0: 222-44-55
Совпадение 1: 323-22-33

В данном примере мы используем поиск по шаблону всех семизначных номеров. Для начала мы создаем текстовую строку, содержащую три телефонных номера, только два из которых соответствуют нашему условию. Шаблон для поиска 7-мизначного номера выглядит следующим образом: /\d{3} – \d{2} – \d{2}/m.

Далее мы производим поиск по шаблону:

$matches = preg_match_all ($pattern,$str, $result);

И выводим содержимое массива $result на экран:

for ($i=0;$i<$matches;$i++)
echo «Совпадение $i: «.$result[0][$i].»<br>»;