Как стать автором
Обновить

Регулярные выражения в PHP: Магия Поиска и Замены

Уровень сложностиПростой

PHP – язык программирования, который сравним с магией. И как в любой хорошей магии, у нас есть свои волшебные инструменты. Сегодня мы поговорим о регулярных выражениях, которые как визажисты для текста – превращают кашицу из символов в волшебные картины.

Зачем нам регулярки?

PHP без регулярных выражений – как человек без кофе по утрам: можно, но зачем? Они делают наш код не просто рабочим, а стильным, словно модельный показ PHP-кода на подиуме.

Введение в мир шаблонов

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

PHP и регулярки – как Шерлок Холмс и лупа: находят даже те детали, которые другие языки бы давно потеряли. Например, давайте найти все вхождения слова "PHP" в строке. Это проще, чем заказать кофе в кафе.

$str = «Регулярные выражения в PHP: Магия Поиска и Замены»;
$pattern = «/PHP/»;
preg_match_all($pattern, $str, $matches);
print_r($matches[0]);

И вот оно – весь код для выполнения поиска. Просто, не правда ли?

Как видите, PHP и регулярки – неразлучный дуэт, как Биба и Боба.

Теперь, когда мы приоткрыли завесу в мире регулярных выражений, давайте поглубже погрузимся в этот колдовской лес.

Возможные использования регулярок для повседневной работы -

1. Охота за Email-адресами

Ловим в сети email-адреса, как звезды на небесах! Регулярные выражения позволяют создать шаблон, который вычленил бы все электронные адреса из текста. Например:

$text = "Контакты: [email protected], [email protected]";
$pattern = "/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/";
preg_match_all($pattern, $text, $matches);
print_r($matches[0]);

2. Разбор Телефонных Номеров

Проходите сквозь лабиринты цифр и скобок, чтобы извлечь телефонные номера. Регулярные выражения легко справятся с форматами разных стран:

$text = "Контакты: +1 (555) 123-4567, +44 20 7946 0958";
$pattern = "/\+[\d\s()-]+/";
preg_match_all($pattern, $text, $matches);
print_r($matches[0]);

3. Поиск Тегов HTML

Нам нужно извлечь содержимое HTML-тегов? Никаких проблем! Регулярные выражения помогут нам создать шаблон для этой задачи:
$html = "<p>Привет, <strong>мир</strong>!</p>";
$pattern = "/<[^>]+>(.*)<\/[^>]+>/";
preg_match($pattern, $html, $matches);
echo "Содержимое тега: " . $matches[1];

4. Интересные Даты

Пусть в тексте спрятаны даты в разных форматах. С регулярками мы сможем их разгадать:

$text = "Важные даты: 2023-11-15, 15.11.2023, 11/15/2023";
$pattern = "/\b(?:\d{4}-\d{2}-\d{2}|\d{2}.\d{2}.\d{4}|\d{2}\/\d{2}\/\d{4})\b/";
preg_match_all($pattern, $text, $matches);
print_r($matches[0]);

5. URL-адреса: На Сцену Вступают Ссылки

Используя регулярные выражения, мы можем легко извлечь URL-адреса из текста:

$text = "Полезные ресурсы: https://www.example.com, http://blog.example.org";
$pattern = "/https?:\/\/\S+/";
preg_match_all($pattern, $text, $matches);
print_r($matches[0]);

Как вы видите, регулярки могут помочь в множестве ситуаций выйти сухим из воды.

Небольшая жизненная ситуация, когда регулярки спасли компанию от хаоса.

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

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

И тут приходит Он — разработчик, обладающий магией регулярных выражений. Сначала он использует регулярное выражение для поиска всех записей, содержащих неверные символы:

$pattern = '/[^\x20-\x7E\t\r\n]/';
$sql = "SELECT * FROM table WHERE REGEXP_REPLACE(column_name, '{$pattern}', '') <> column_name";

Это регулярное выражение [^\x20-\x7E\t\r\n] ищет любые символы, не входящие в стандартный набор ASCII (от пробела до тильды, включая символы табуляции и новой строки).

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

$update_query = "UPDATE table SET column_name = REGEXP_REPLACE(column_name, '{$pattern}', '') WHERE REGEXP_REPLACE(column_name, '{$pattern}', '') <> column_name";

И вуа-ля, магия регулярных выражений помогает очистить базу данных от некорректных символов, и сайт вновь начинает функционировать корректно.

Также в интернете множество онлайн инструментов, для практики и проверки регулярных выражений. Где вы можете набить руку на их применении.

Надеюсь что моя статья помогла уменьшить порог вхождения в этот прекрасный мир "Магии и Регулярок" :)

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.