Регулярные выражения (или regexp) - это последовательности символов, используемые для поиска и сопоставления шаблонов в строках. Они являются мощным инструментом для обработки текстовой информации, такой как валидация данных, извлечение определенных значений или замена текста.
Одна из главных особенностей заключается в том, что они позволяют задать сложные условия сопоставления с помощью специальных символов и метасимволов. Например, символ .
соответствует любому символу, d
соответствует любой цифре, w
соответствует любой букве или цифре, +
указывает на повторение предыдущего символа один или несколько раз, а *
указывает на повторение предыдущего символа ноль или более раз.
PHP предоставляет встроенные функции для работы с регулярными выражениями, такие как preg_match()
, preg_match_all()
, preg_replace()
и другие. Они позволяют выполнять сопоставление, извлечение и замену текста на основе заданного регулярного выражения.
Вот несколько полезных регулярных выражений в PHP и примеры их использования:
Валидация электронной почты
$email = "example@example.com"; if (preg_match("/^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/", $email)) { echo "Email is valid."; } else { echo "Invalid email format."; }
Поиск и замена
$text = "The quick brown fox jumps over the lazy dog."; $replacedText = preg_replace("/brown fox/i", "red cat", $text); echo $replacedText;
Извлечение чисел из строки
$string = "I have 10 apples and 5 oranges."; preg_match_all("/d+/", $string, $matches); print_r($matches[0]);
Проверка формата даты
$date = "2023-05-17"; if (preg_match("/^d{4}-d{2}-d{2}$/", $date)) { echo "Date format is valid."; } else { echo "Invalid date format."; }
Валидация URL-адреса
$url = "http://www.example.com"; if (preg_match("/^(https?://)?([da-z.-]+).([a-z.]{2,6})([/w .-]*)*/?$/", $url)) { echo "URL is valid."; } else { echo "Invalid URL format."; }
Проверка наличия цифр в строке
$string = "Hello123"; if (preg_match("/d/", $string)) { echo "The string contains at least one digit."; } else { echo "The string does not contain any digits."; }
Валидация номера телефона в формате XXX-XXX-XXXX
$phone = "123-456-7890"; if (preg_match("/^d{3}-d{3}-d{4}$/", $phone)) { echo "Phone number is valid."; } else { echo "Invalid phone number format."; }
Извлечение хештегов из строки
$string = "This is a #sample #string with #hashtags."; preg_match_all("/#w+/", $string, $matches); print_r($matches[0]);
Проверка, начинается ли строка с определенного слова
$string = "Hello, world!"; $word = "Hello"; if (preg_match("/^$word/", $string)) { echo "The string starts with "$word"."; } else { echo "The string does not start with "$word"."; }
Поиск и извлечение всех ссылок из HTML-кода
$html = '<a href="https://www.example1.com">Link 1</a> <a href="https://www.example2.com">Link 2</a>'; preg_match_all('/<as+href="([^"]+)"/', $html, $matches); print_r($matches[1]);
Поиск IP-адресов в тексте
$text = "The server IP address is 192.168.0.1 and the client IP address is 10.0.0.1."; preg_match_all("/b(?:d{1,3}.){3}d{1,3}b/", $text, $matches); print_r($matches[0]);
Проверка, является ли строка палиндромом (читается одинаково слева направо и справа налево)
$string = "madam"; if (preg_match("/^(.)(.?)(.?)(.?)(.?).*54321$/", $string)) { echo "The string is a palindrome."; } else { echo "The string is not a palindrome."; }
14. Поиск и извлечение всех слов, начинающихся с заглавной буквы:
$string = "This is a Sample Text with Capitalized Words."; preg_match_all("/b[A-Z]w*b/", $string, $matches); print_r($matches[0]);
Поиск и замена дат в формате DD/MM/YYYY на MM/DD/YYYY
$text = "Today is 17/05/2023. Tomorrow is 18/05/2023."; $replacedText = preg_replace("/(d{2})/(d{2})/(d{4})/", "$2/$1/$3", $text); echo $replacedText;
Извлечение картинок из текста
$text = "This is some text with an image <img src="image1.jpg"> and another image <img src="image2.jpg"> ; preg_match_all('/<img[^>]*?src=["\']?([^"\'\s>]+)["\']/is', $text, $matches); print_r($imageUrls);
В этом примере мы используем регулярное выражение /