Ссылка: Начало работы с регулярными выражениями PHP
Последнее изменение: 10 мая 2019 16:23:19
Примечания переводчика:
Эта статья представляет собой статью, ориентированную на 0-регулярную основу. Многие продвинутые способы использования регулярности не задействованы, это простое введение.
Для ознакомления с основами вы можете непосредственно ознакомиться с кратким списком грамматики регулярных выражений в конце этой статьи (рисунок) (без модификаторов).
Основная цель регулярных выражений (регулярных выражений или регулярных выражений) – эффективный поиск шаблонов в заданном тексте. Эти шаблоны поиска написаны в специальном формате, понятном анализатору регулярных выражений.
Регулярные выражения получены из программы grep в системе Unix, которая используется для помощи пользователям в обработке строк и манипулировании текстом. Следуя некоторым основным правилам, мы можем создавать очень сложные шаблоны поиска.
Например, вам дается задание проверить, соответствует ли адрес электронной почты или номер телефона правильному формату. С помощью простых команд эти проблемы можно легко решить с помощью регулярных выражений. Обычная грамматика поначалу дается нелегко, но как только вы ее изучите, вы поймете, что можете легко выполнять сложные поиски и что вы можете решать проблемы с разных точек зрения, вводя короткие символы.
PHP реализовал множество различных механизмов синтаксического анализа регулярных Функций. В PHP есть два основных регулярных парсера. Один из них называется обычным синтаксическим анализатором. POSIX Другой называется PCRE (Регулярное выражение, совместимое с Perl, Регулярное выражение, совместимое с Perl).
Префиксом функции PHP POSIX является ereg_
。 С момента выпуска PHP 5.3 движок был заброшен. Но давайте посмотрим на лучший, более быстрый движок для ПК.
В PHP каждая функция PCI использует preg_
Start, например preg_match или preg_replace. Вы можете прочитать полный список функций в документации по PHP.
Чтобы использовать регулярные выражения, вам сначала нужно изучить грамматику. Грамматика содержит ряд букв, цифр, точек, дефисов и специальных символов, которые можно комбинировать с различными круглыми скобками.
В PHP каждый шаблон регулярного выражения использует строки, совместимые с Perl. В Perl напишите шаблоны регулярных выражений между косыми чертами, например /привет/|/. В PHP это строка.
‘/привет/’ 。
Сейчас? Давайте рассмотрим некоторые операторы, которые являются основными строительными блоками регулярных выражений.
^ Отмечает начало шаблона, хотя в некоторых случаях его можно опустить | ^ | |
Соответствующий символу^, символ $обозначает конец шаблона поиска | $ | |
Сопоставьте любой отдельный символ | . | |
Он будет соответствовать предыдущему шаблону 0 или один раз | ? | |
Он будет соответствовать предыдущему шаблону один или несколько раз | + | |
Он будет соответствовать предыдущему шаблону 0 или более раз | * | |
\ | Логическое или | |
Элементы в пределах диапазона соответствия | – | |
Объединение различных элементов схемы | () | |
Любой отдельный символ между круглыми скобками в совпадении | [] | |
Он используется для сопоставления точного количества символов | {мин, макс} | |
Сопоставьте любое одно число | d | |
Сопоставьте любую единственную нецифровую цифру | D | |
Сопоставьте символы слов, включая подчеркивания_ | w | |
Сопоставьте любой не-словесный символ | W | |
Совпадение пустых символов | s |
В качестве дополнения к PHP используйте простые косые черты \
Чтобы избежать символа косой черты вперед. Примеры: '/он\/лло/'
Чтобы вкратце понять, как использовать эти операторы, давайте рассмотрим несколько примеров:
‘/привет/’ | Совпадающие слова привет | |
‘/^привет/’ | Сопоставление в начале строки привет Возможные совпадения, такие как привет, привет, мир, Но это не будет соответствовать мировому привету | |
‘/привет$/’ | Совпадение в конце строки привет | |
‘/он.о/’ | Сопоставьте любое местоположение он и о любого персонажа, такого как хело , хело, хейо, но это не будет соответствовать hello | |
‘/(он)?лло/’ | Матч асллорхелло | |
‘/(привет)+/’ | сопоставление приветствия Один или несколько раз, например, привет ,привет, привет | |
‘/(он)*лло/’ | совпадение, привет, он привет, Но это не будет совпадать, черт возьми | |
`/привет\ | мир/” | Совпадающие слова привет или мир |
‘/[A-Z]/’ | Соответствие от A до Z заглавных букв | |
‘/[abc]/’ | Сопоставьте любой символ в a, b, c* | |
‘/abc{1}/’ | оставайтесь после точного сопоставления одного символа c, такого как abc, но он не соответствует abc | |
‘/abc{1,}/’ | оставайтесь буквой b После сопоставления одного или нескольких символов c, таких как abc , abc | |
‘/abc{2,4}/’ | оставайтесь на месте-соответствие 2-4 c, например, bcc, abcc, abc ccc, но оно не соответствует abc |
Примечание переводчика: В приведенном выше примере в оригинальном тексте есть некоторые ошибки, которые были исправлены здесь.
В дополнение к операторам существуют Модификатор регулярного выражения Это может изменить поведение режима поиска во всем мире.
Модификаторы регулярных выражений помещаются после шаблонов, таких как '/привет/я'
Аналогично, они состоят из отдельных букв, таких как я
Режим представления не учитывает регистр. x
Представляет пустой символ в режиме игнорирования. Для получения полного списка модификаторов, пожалуйста, посетите онлайн-документацию PHP.
Реальная функция регулярных выражений заключается в объединении этих операторов и модификаторов для создания довольно сложных шаблонов поиска.
В PHP у нас есть в общей сложности девять доступных функций PCRE. Вот список:
- Preg_filter – Выполняет поиск и подстановку регулярных выражений
- Preg_grep — Возвращает запись массива совпадающих шаблонов
- Preg_last_error – Возвращает код ошибки, сгенерированный последним регулярным выполнением PCR E
- Preg_match Выполняет соответствующие регулярные выражения
- Preg_match_all — Выполняет глобальное сопоставление регулярных выражений
- Preg_quote-экранирует символы регулярного выражения
- Preg_replace – Выполняет поиск и замену регулярного выражения
- Preg_replace_callback – Выполняет поиск по регулярному выражению и заменяет его обратным вызовом
- Preg_split — Разделяет строки с помощью регулярного выражения
Двумя наиболее часто используемыми функциями являются preg_match
и preg_replace
。
Давайте сначала создадим тестовую строку, в которой мы будем выполнять поиск по регулярным выражениям. Классический пример Hello World:
$test_string = 'hello world';
Если мы просто хотим найти слово “привет” или “мир”, шаблон поиска будет следующим:
preg_match('/hello/', $test_string); preg_match('/world/', $test_string);
Если мы хотим увидеть, является ли строка словом или нет здравствуйте
В начале нам просто нужно, чтобы ^
Символы располагались в начале шаблона поиска следующим образом:
preg_match('/^hello/', $test_string);
Пожалуйста, обратите внимание, что Регулярные выражения чувствительны к регистру Шаблоны и слова выше Привет
Несоответствие. Если нам нужны шаблоны Без учета регистра Следует применять следующие модификаторы:
preg_match('/^hello/i', $test_string);
Обратите внимание на конец шаблона косая черта вперед Более поздние символы я
Теперь давайте рассмотрим более сложный шаблон поиска. Что делать, если мы хотим подтвердить, что первые пять символов в строке состоят из букв и цифр?
preg_match('/^[A-Za-z0-9]{5}/', $test_string);
Давайте проанализируем этот шаблон поиска. Во-первых, используя ^
, мы указываем, что строка должна начинаться с букв и цифр. Это вызвано [A-Za-z0-9]
Для уточнения.
A-Z
Представляет все символы от A до Z. a-z
Представляет все строчные символы от a до Z.
{5}
Сообщите анализатору регулярных выражений, что здесь ровно пять символов. Если это шесть вместо пяти, анализатор ничему не соответствует.
Приведенные выше регулярные выражения могут быть оптимизированы следующим образом:
preg_match('/^\w{5}/', $test_string);
\w
Представляет любую букву, цифру, включая символы подчеркивания _
Примечание переводчика: В оригинальном тексте нет 5… Это не так.
Вот некоторые функции PHP, использующие регулярные выражения, которые вы можете использовать каждый день.
Примечание переводчика: На самом деле существуют и другие, более удобные альтернативные функции.
Например, убедитесь,что можно использовать почтовые ящики filter_var($email, FILTER_VALIDATE_EMAIL)
Для получения дополнительной информации нажмите здесь
6.1 Проверка электронной почты
Эта функция проверяет заданную строку адреса электронной почты, чтобы убедиться, что она имеет правильный формат.
function validate_email($email_address) { if( !preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+ ([a-zA-Z0-9\._-]+)+$/", $email_address)) { return false; } return true; }
6.2 URL-адрес для проверки
function validate_url($url) { return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)? (/.*)?$|i', $url); }
6.3 Удаление повторяющихся слов
Я часто нахожу повторяющиеся слова в текстах, такие как это это
. Эта удобная функция может удалить эти повторяющиеся слова.
function remove_duplicate_word($text) { return preg_replace('/\b(\w+)\s/i', "$1", $text); }
Примечание переводчика: Регулярное выражение в исходном тексте неверно и было исправлено здесь. В исходном тексте приведены следующие функции:
function remove_duplicate_word($text) { return preg_replace("/s(w+s)1/i", "$1", $text); }
6.4 Проверка буквенно-цифровых символов, знаков подчеркивания и пробелов
function validate_alpha($text) { return preg_match("/^[A-Za-z0-9_- ]+$/", $text); }
6.5 Проверка почтового индекса США
function validate_zip($zip_code) { return preg_match("/^([0-9]{5})(-[0-9]{4})?$/i",$zip_code); }
7.1 метасимвол
Отметьте начало строки | ^ | |
Конец строки тега | $ | |
Сопоставьте любой отдельный символ | . | |
Логическое ИЛИ | \ | |
Элементы группы | () | |
Соответствует любому из a, b, C | [abc] | |
Соответствует любому, кроме a, b, C | [^abc] | |
Пустой символ | s | |
0 или 1 a Эквивалентно {0,1} | а? | |
0 или более | a* | |
Один или несколько | a+ | |
Точное соответствие 2a | a{2} | |
До 5а | a{,5} | |
От пяти до десяти матчей | a{5,10} | |
Словесные символы, эквивалентные[A-Za-z0-9_] | w | |
Любой не-словесный символ | W | |
Любой пустой символ | s | |
Любой непустой символ | S | |
Любое число, равное[0-9] | d | |
Любой нечисловой эквивалент[^0-9] | D |
7.2 модификатор схемы
игнорировать дело | i |
Многострочный режим | m |
Дополнительный анализ закономерностей | S |
Строка шаблона считается кодировкой UTF-8 | u |
Примечание переводчика: Вышеуказанные модификаторы шаблонов чувствительны к регистру.
Некоторые модификаторы не перечислены в оригинальном тексте, в конце концов, они предназначены только для вводных целей.
- 15 Регулярное выражение PHP для веб-разработчиков
- Освоение регулярных выражений в PHP
- Введение в регулярное выражение PHP
Примечание переводчика: Эта часть не переведена
Джоэл Рейес занимается дизайном и кодированием веб-сайтов в течение нескольких лет, это привело его к тому, что он стал творческим умом, стоящим за Looney Designer, дизайнерским ресурсом и сайтом-портфолио, который вращается вокруг веб-и графического дизайна.
Пишите для нас! Мы ищем интересные и креативные статьи, если вы хотите внести свой вклад, просто отправьте нам электронное письмо.