Рубрики
Uncategorized

Начало работы с регулярными выражениями PHP

Автор оригинала: David Wong.

Ссылка: Начало работы с регулярными выражениями 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, дизайнерским ресурсом и сайтом-портфолио, который вращается вокруг веб-и графического дизайна.

Пишите для нас! Мы ищем интересные и креативные статьи, если вы хотите внести свой вклад, просто отправьте нам электронное письмо.