Php

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

Содержание

Уроки PHP – регулярные выражения с примерами

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

 

 

Основы регулярных выражений в PHP

В самом начале появления регулярных выражений на них была возложена задача помощи при работе со строками в Unix системах. Позже они стали активно использоваться не только в других системах, но и в разных языках программирования.

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

 

 

Типы регулярных выражений

Существует 2 типа регулярных выражений:

  • Perl совместимый
  • POSIX расширенный

 

Perl совместимые функции – это такие как preg_match, preg_replace, а версии POSIX – такие как ereg, eregi. Учтите, что последние функции считаются устаревшими в PHP 5.3.0 и были удалены в PHP 7. Поэтому мы будем использовать только Perl совместимые функции. Важно знать, что при использовании Perl-совместимых регулярных выражений, такое выражение должно быть заключено в разделители, например, косую черту (/).

 

 

Основной синтаксис регулярных выражений в PHP

Чтобы использовать регулярные выражения, сначала вам нужно изучить синтаксис шаблонов. Мы можем сгруппировать символы внутри шаблона следующим образом:

  • Обычные символы, которые следуют один за другим, например, hello
  • Индикаторы начала и окончания строки в виде ^ и $
  • Индикаторы подсчета, такие как +, *, ?
  • Логические операторы, такие как |
  • Группирующие операторы, такие как {}, (), []

 

 

Пример шаблона регулярного выражения для проверки правильности адреса электронного ящика выглядит следующим образом:

^[a-zA-Z0-9._-][email protected][a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$

 

Код PHP для проверки электронной почты с использованием Perl-совместимого регулярного выражения выглядит следующим образом:

<?php
$pattern = "/^[a-zA-Z0-9._-][email protected][a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/";
$email   = "[email protected]";
if (preg_match($pattern, $email)) {
 echo "Проверка пройдена успешно!";
} else {
 echo "Проверка не пройдена!";
}
?>

 

 

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

Регулярное выражение (шаблон) Проходит проверку (объект) Не проходит проверку (объект) Комментарий
world Hello world Hello Ivan Проходит, если шаблон присутствует где-либо в объекте
^world world class Hello world Проходит, если шаблон присутствует в начале объекта
world$ Hello world world class Проходит, если шаблон присутствует в конце объекта
world/i This WoRLd Hello Ivan Выполняет поиск в нечувствительном к регистру режиме
^world$ world Hello world Строка содержит только «world»
world* worl, world, worlddd wor Присутствует 0 или больше «d» после «worl»
world+ world, worlddd worl Присутствует по крайней мере одна «d» после «worl»
world? worl, world, worly wor, wory Присутствует 0 или 1 «d» после «worl»
world{1} world worly Присутствует одна «d» после «worl»
world{1,} world, worlddd worly Присутствует одна или больше «d» после «worl»
world{2,3} worldd, worlddd world Присутствует 2 или 3 «d» после «worl»
wo(rld)* wo, world, worldold wa Присутствует 0 или больше «rld» после «wo»
earth|world earth, world sun Строка содержит «earth» или «world»
w.rld world, wwrld wrld Содержит любой символ вместо точки
^.{5}$ world, earth sun Строка содержит ровно 5 символов
[abc] abc, bbaccc sun В строке есть «a», или «b» или «c»
[a-z] world WORLD В строке есть любые строчные буквы
[a-zA-Z] world, WORLD, Worl12 123 В строке есть любые строчные или прописные буквы
[^wW] earth w, W Фактический символ не может быть «w» или «W»

 

 

 

Теперь перейдем к более сложному регулярному выражению с подробным объяснением.

 

Практические примеры сложных регулярных выражений

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

1) Проверка имени пользователя с помощью регулярного выражения
Начнем с проверки имени пользователя. Если у вас есть форма регистрации, вам понадобится проверять на правильность имена пользователей. Предположим, вы не хотите, чтобы в имени были какие-либо специальные символы, кроме «_.-» и, конечно, имя должно содержать буквы и возможно цифры. Кроме того, вам может понадобиться контролировать длину имени пользователя, например от 4 до 20 символов.

Сначала нам нужно определить доступные символы. Это можно реализовать с помощью следующего кода:

[a-zA-Z0-9_.-]

 

После этого нам нужно ограничить количество символов следующим кодом:

{4,20}

 

Теперь собираем это регулярное выражение вместе:

^[a-zA-Z-0-9_.-]{4,20}$

 

В случае Perl-совместимого регулярного выражения заключите его символами ‘/‘. Итоговый PHP-код выглядит так:

<?php
$pattern  = '/^[a-zA-Z0-9_.-]{4,20}$/';
$username = "demo_user-123";
if (preg_match($pattern, $username)) {
 echo "Проверка пройдена успешно!";
} else {
 echo "Проверка не пройдена!";
}
?>

 

2) Проверка шестнадцатеричного кода цвета регулярным выражением
Шестнадцатеричный код цвета выглядит так: #5A332C, также допустимо использование краткой формы, например #C5F. В обоих случаях код цвета начинается с # и затем идут ровно 3 или 6 цифр или букв от a до f.

 

Итак, проверяем начало кода:

^#

 

Затем проверяем диапазон допустимых символов:

[a-fA-F0-9]

 

После этого проверяем допустимую длину кода (она может быть либо 3, либо 6). Полный код регулярного выражения выйдет следующим:

^#(([a-fA-F0-9]{3}$)|([a-fA-F0-9]{6}$))

 

Здесь мы используем логический оператор, чтобы сначала проверить код вида #123, а затем код вида #123456. Итоговый PHP-код проверки регулярным выражением выглядит так:

<?php
$pattern = '/^#(([a-fA-F0-9]{3}$)|([a-fA-F0-9]{6}$))/';
$color   = "#1AA";
if (preg_match($pattern, $color)) {
 echo "Проверка пройдена успешно!";
} else {
 echo "Проверка не пройдена!";
}
?>

 

3) Проверка электронной почты клиента с использованием регулярного выражения
Теперь давайте посмотрим, как мы можем проверить адрес электронной почты с помощью регулярных выражений. Сначала внимательно рассмотрите следующие примеры адресов почты:

[email protected]
[email protected]
[email protected]

 

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

Таким образом, первая часть должна быть строкой с буквами, цифрами или некоторыми специальными символами, такими как _-.. В шаблоне мы можем написать это следующим образом:

^[a-zA-Z0-9_.-]+

 

Доменное имя всегда имеет, скажем, имя и tld (top-level domain) – т.е, доменную зону. Доменная зона – это .com, .ua, .info и тому подобное. Это означает, что шаблон регулярного выражения для домена будет выглядеть так:

[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$

 

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

^[a-zA-Z0-9._-][email protected][a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$

 

 

В коде PHP эта проверка будет выглядеть следующим образом:

<?php
$pattern = '/^[a-zA-Z0-9._-][email protected][a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/';
$email   = "[email protected]";
if (preg_match($pattern, $email)) {
 echo "Проверка пройдена успешно!";
} else {
 echo "Проверка не пройдена!";
}
?>

 

 

 

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

 



Регулярные выражения в PHP. Применение регулярных выражений

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

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

Если говорить проще и в двух словах, то регулярные выражения позволяют нам осуществлять поиск практически неограниченного уровня сложности в массиве текста. Под словами » практически неограниченного уровня сложности» имеется в виду именно то, что сказано. Мы действительно можем искать и валидировать что угодно. Например, вот лишь небольшой список классических задач, которые принято решать средствами регулярных выражений: валидация email, проверка номера карты или телефона, проверка введенного имени, валидация строк на предмет наличия заданного диапазона символов и т.д. и т.п.

Круг задач действительно обширен и, если бы не было регулярных выражений, то было бы совсем грустно при решении любой из перечисленных задач. Огромным плюсом при работе с регулярными выражениями является их универсальность. Что здесь имеется в виду? Дело в том, что регулярные выражения есть не только в PHP. Регулярных выражений встроен и во многие другие языки программирования. PHP, JavaScript, PERL, Python, MySQL, Ruby… Вот лишь некоторые из языков программирования, в которых нам доступны возможности регулярных выражений. И этот список можно продолжать. И синтаксис регулярных выражений в каждом из указанных языков — фактически одинаков.

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

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Для последующего изучения нам, конечно же, потребуются соответствующие учебники. Здесь я могу рекомендовать признанного гуру в теме регулярных — это Джеффри Фридл и его книга Регулярные выражения.

Этой книги будет более чем достаточно для изучения регулярных выражений. Также при изучении темы вам очень пригодятся всевозможные сервисы для тестирования регулярных выражений. Одним из лучших здесь будет сайт http://regexr.com/

Этот сервис позволяет не только тестировать регулярные выражения, но и делиться написанным шаблоном регулярного выражения (или, как говорят, регуляркой) с другими. Ну и, наконец, пример сайта, на котором можно найти уже готовые шаблоны регулярных выражений — http://regexlib.com/Search.aspx

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

Ну а на этом мы, пожалуй, будем с вами прощаться. В следующих статьях мы уже непосредственно приступим к изучению синтаксиса регулярных выражений и к работе с регулярными выражениями в PHP. Больше о регулярных выражениях вы можете узнать из нашего курса по регулярным выражениям. Удачи!

Хотите изучить регулярные выражения на PHP?

Посмотрите 12-ти часовой видео курс по регулярным выражениям на PHP!

Смотреть

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

Вы здесь:
Главная — PHP — PHP Основы — Функции для работы с регулярными выражениями в PHP


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

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


  • Функция preg_match(string pattern, string subject, array matches) — данная функция ищет совпадения в строке subject регулярному выражению pattern. Первое найденное совпадение помещается в массив matches. Обратите внимание, что эта функция ищет только первое совпадение. Второе, третье и так далее она не ищет! Массив matches будет таким:

    • Первый элемент содержит всю совпавшую часть строки в целом.
    • Второй элемент содержит часть строки, совпавшей с первым субпаттерном (что такое субпаттерны будет разобрано в одной из следующих статей).
    • Третий элемент содержит часть строки, совпавшей с вторым субпаттерном.
    • И так далее.


    Также очень важно понимать, что параметр matches не обязателен. Ещё очень важный момент функции preg_match() — это её использование в простом поиске на совпадение, так как она возвращает либо 0 (не было совпадений), либо 1 (было совпадение). Ввиду этого, данная функция очень активно используется в конструкциях IF.

  • Функция preg_match_all(string pattern, string subject, array matches) — полный аналог функции preg_match(), но здесь поиск совпадений продолжается и после первого найденного. То есть если функция preg_match() останавливает свою работу после первого найденного совпадения, то функция preg_match_all() идёт дальше. Возвращает эта функция — количество совпадений (разумеется, их может быть больше 1-го).
  • Функция preg_replace(mixed pattern, mixed replacement, mixed subject, int limit). Очень полезная функция, которая в строке subject заменяет строки, соответствующие pattern, на replacement. Количество замен задаётся параметром limit. Если данный параметр не указан (а он является необязательным), то будет проведена замена всех найденных совпадений.

Теперь же давайте приведу простой пример использования какой-нибудь из этой функции, чтобы Вы посмотрели всё на практике:


<?php

  //Создаём строку с e-mail

  $str = "Вот мой e-mail: [email protected], пишите...";

  //Проверяем строку на наличие e-mail с помощью регулярных выражений и затем выводим соответствующий результат

  if (preg_match("/[a-z0-9_-]+(\.[a-z0-9_-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})/i", $str)) echo "E-mail найден";

  else echo "E-mail не найден";

?>

В результате, как Вы и догадались появится строка: «E-mail найден«. В данном примере написано регулярное выражение, которое Вы пока понимать не должны. Уже начиная со следующей статьи, мы с Вами будем учиться составлять регулярные выражения, а пока просто примите как должное: регулярное выражение в примере ищет e-mail в заданной строке.

Функций для работы с регулярными выражениями в PHP несколько больше, но вот этот список — это самые важные и самые главные. Их надо обязательно знать и уметь применять! Лично я эти функции применял такое количество раз, что не сосчитать. И заранее могу сказать, что если встанет вопрос о применении регулярных выражений в PHP, то Вы этими функциями и будете пользоваться.


  • Создано 04.04.2011 14:49:56



  • Михаил Русаков

Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):


  1. Кнопка:

    <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так:


  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

Урок по регулярным выражениям в PHP, для начинающих

Представляем Вам уникальный для Рунета онлайн курс, по регулярным выражениям на PHP.

Регулярные выражения на PHP — это невероятно мощное средство для работы с текстами, для поиска по массиву текста, проверки и обработки текста, и многое другое.

В нашем видеокурсе по регулярным выражениям на PHP, вы ознакомитесь со многими примерами и сами сможете создавать свои шаблоны.

При помощи шаблонов регулярных выражений можно найти в тексте буквально что-угодно. Именно благодаря мощи регулярных выражений, они включены во многие языки программирования — PERL, PHP, JavaScript, Python, Ruby и множество других. Поддержка регулярных выражений включена во множество редакторов — Notepad++, Sublime Text, AkelPad, все возможные IDE.

Несмотря на все преимущества использования регулярных выражений, многие веб-мастера сами отмечают, что паттерны (шаблоны) регулярных выражений являются их слабым местом. Для новичков шаблоны вообще представляют собой китайскую грамоту. Именно по этим соображениям мы рекомендуем Вам курс по регулярным выражениям на PHP. Благодаря урокам предлагаемого курса Вы на простых и понятных примерах изучите такую относительно сложную тему, как регулярные выражения.

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

В нашем видеокурсе по регулярным выражениям на PHP, вы ознакомитесь со многими примерами и сами сможете создавать свои шаблоны.

Все уроки курса:

Количество уроков: 20

Продолжительность курса: 12:35:50

Автор: Андрей Кудлай

Меня зовут Андрей Кудлай — один из авторов проекта webformyself и практикующий веб-разработчик. Имею хорошие навыки работы с HTML, CSS, jQuery, PHP, MySQL, Bootstrap, CakePHP, Yii2, WordPress, OpenCart. Являюсь автором нескольких курсов-бестселлеров издательства WebForMySelf.com

Описание курса: Регулярные выражения — это невероятно мощное средство для работы с текстами, для поиска по массиву текста и для обработки текста. При помощи шаблонов регулярных выражений можно найти в тексте буквально что-угодно. Именно благодаря мощи регулярных выражений, они включены во многие языки программирования — PERL, PHP, JavaScript, Python, Ruby и множество других


Категории премиум

PHP функций регулярных выражений


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

Регулярные выражения позволяют искать и заменять шаблоны в строках.


Установка

Функции регулярных выражений PHP являются частью ядра PHP. Для использования этих функций установка не требуется.


Конфигурация среды выполнения

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

Имя По умолчанию Описание Сменный
pcre.backtrack_limit «1000000» Максимальное количество возвратов, которое разрешено обработчику регулярных выражений при оценке выражения. (доступно с PHP 5.2) PHP_INI_ALL
pcre.recursion_limit «100000» Максимальная глубина рекурсии, которую разрешено достичь обработчику регулярных выражений при оценке выражения.(доступно с PHP 5.2) PHP_INI_ALL
pcre.jit «1» Если установлено значение «1», это включает своевременную компиляцию PCRE (Perl-совместимых регулярных выражений). (доступно с PHP 7.0) PHP_INI_ALL

Функции регулярных выражений PHP

Функция Описание
preg_filter () Возвращает строку или массив с замененными совпадениями с образцом, но только если совпадения были найдены.
preg_grep () Возвращает массив, состоящий только из элементов входного массива, соответствующих шаблону
preg_last_error () Возвращает код ошибки, указывающий причину сбоя последнего вызова регулярного выражения
preg_match () Находит первое совпадение шаблона в строке
preg_match_all () Находит все совпадения шаблона в строке
preg_replace () Возвращает строку, в которой совпадения с шаблоном (или массивом шаблонов) заменяются подстрокой (или массивом подстрок) в заданной строке
preg_replace_callback () Для данного выражения и обратного вызова возвращает строку, в которой все совпадения выражения заменяются подстрокой, возвращенной обратным вызовом.
preg_replace_callback_array () Учитывая массив, связывающий выражения с обратными вызовами, возвращает строку, в которой все совпадения каждого выражения заменяются подстрокой, возвращаемой обратным вызовом
прег_сплит () Разбивает строку на массив, используя совпадения регулярного выражения в качестве разделителей
preg_quote () Экранирует символы, которые имеют особое значение в регулярных выражениях, помещая перед ними обратную косую черту.

Модификаторы регулярных выражений

Модификаторы могут изменить способ выполнения поиска.

Модификатор Описание
i Выполняет поиск без учета регистра
м Выполняет многострочный поиск (шаблоны, которые ищут
начало или конец строки будет соответствовать началу или концу
каждой строки)
u Обеспечивает правильное сопоставление кодированных шаблонов UTF-8

Шаблоны регулярных выражений

Скобки используются для нахождения диапазона символов:

Выражение Описание
[abc] Найдите один символ из вариантов в скобках
[^ abc] Найдите любой символ НЕ в скобках
[0-9] Найдите один символ из диапазона от 0 до 9

Метасимволы

Метасимволы — это символы со специальным значением:

Метасимвол Описание
| Найдите совпадение для любого из шаблонов, разделенных | как в: кошка | собака | рыба
.Привет
$ Находит совпадение в конце строки, например: World $
\ д Найдите цифру
\ с Найти пробел
\ б Найдите совпадение в начале такого слова: \ bWORD или в конце такого слова: WORD \ b
\ uxxxx Найдите символ Юникода, заданный шестнадцатеричным числом xxxx

Кванторы

Кванторы определяют количества:

Квантификатор Описание
п + Соответствует любой строке, содержащей хотя бы одну строку n
н * Соответствует любой строке, содержащей ноль или более вхождений n
н? Соответствует любой строке, содержащей ноль или одно вхождение n
n {x} Соответствует любой строке, содержащей последовательность X n
n {x, y} Соответствует любой строке, содержащей последовательность от X до Y n
n {x,} Соответствует любой строке, содержащей последовательность не менее X n

Примечание: Если ваше выражение требует поиска одного из специальных символов, вы можете использовать
обратная косая черта (\), чтобы их избежать.Например, для поиска одного или нескольких вопросительных знаков вы можете использовать следующие
выражение: $ pattern = ‘/ \? + /’;

.Учебное пособие по регулярным выражениям PHP

: Preg_match, Preg_split, Preg_replace

  • Home
  • Testing

      • Back
      • Agile Testing
      • BugZilla
      • 9 Cucumber Testing

        9Cucumber Testing Database

      • Назад
      • JUnit
      • LoadRunner
      • Ручное тестирование
      • Мобильное тестирование
      • Mantis
      • Почтальон
      • QTP
      • Назад
      • Центр качества SAP
      • SoapUI
      • Управление тестированием
      • TestLink
  • SAP

      • B ack
      • ABAP
      • APO
      • Начинающий
      • Basis
      • BODS
      • BI
      • BPC
      • CO
      • Назад
      • CRM
      • 9000 HRM
      • Crystal Reports
      • QM
      • Заработная плата
      • Назад
      • PI / PO
      • PP
      • SD
      • SAPUI5
      • Безопасность
      • Solution Manager
      • Success Webfactors
      • SAP 9272000
      • 000 9272000

        00040003 SAP Tutorials

        000

      • Назад
      • Apache
      • AngularJS
      • ASP.Net
      • C
      • C #
      • C ++
      • CodeIgniter
      • СУБД
      • JavaScript
      • Назад
      • Java
      • JSP
      • Kotlin
      • Linux
      • Linux
      • Kotlin
      • Linux
      • js

      • Perl
      • Назад
      • PHP
      • PL / SQL
      • PostgreSQL
      • Python
      • ReactJS
      • Ruby & Rails
      • Scala
      • SQL
      • 000

      • SQL
      • 000

        0003 SQL

        000

        0003 SQL

        000

      • UML
      • VB.Net
      • VBScript
      • Веб-службы
      • WPF
  • Обязательно учите!

      • Назад
      • Бухгалтерский учет
      • Алгоритмы
      • Android
      • Блокчейн
      • Business Analyst
      • Создание веб-сайта
      • CCNA
      • Облачные вычисления
      • 00030003 COBOL
          9000 Compiler

            9000 Встроенные системы

          • 00030003 9000 Compiler 9000
          • Ethical Hacking
          • Учебные пособия по Excel
          • Программирование на Go
          • IoT
          • ITIL
          • Jenkins
          • MIS
          • Сети
          • Операционная система
          • 00030003
          • Назад
          • Управление проектами Обзоры

          • Salesforce
          • SEO
          • Разработка программного обеспечения
          • VB A
      • Big Data

          • Назад
          • AWS
          • BigData
          • Cassandra
          • Cognos
          • Хранилище данных
          • 0003

          • HBOps
          • 0003

          • HBOps
          • 0003

          • MicroStrategy

      .

      Использование регулярных выражений в PHP

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

      Самый важный набор функций регулярных выражений начинается с preg. Эти функции представляют собой оболочку PHP вокруг библиотеки PCRE (Perl-совместимые регулярные выражения). Все, что говорится о разновидности регулярных выражений PCRE в руководстве по регулярным выражениям на этом веб-сайте, применимо к функциям preg PHP.Когда в руководстве конкретно говорится о PHP, предполагается, что вы используете функции preg. Вы должны использовать функции preg для всего нового кода PHP, который использует регулярные выражения. PHP включает PCRE по умолчанию, начиная с PHP 4.2.0 (апрель 2002 г.).

      Самый старый набор функций регулярных выражений — это те, которые начинаются с ereg. Они реализуют расширенные регулярные выражения POSIX, такие как традиционная команда egrep UNIX. Эти функции в основном предназначены для обратной совместимости с PHP 3. Они официально объявлены устаревшими с PHP 5.3.0. Многие из более современных функций регулярных выражений, такие как ленивые квантификаторы, поиск и Unicode, не поддерживаются функциями ereg. Не позволяйте «расширенному» прозвищу ввести вас в заблуждение. Стандарт POSIX был определен в 1986 году, и с тех пор регулярные выражения прошли долгий путь.

      Последний набор — это вариант набора ereg, с префиксом mb_ для «многобайтовости» к именам функций. В то время как ereg обрабатывает регулярное выражение и строку темы как серию 8-битных символов, mb_ereg может работать с многобайтовыми символами из различных кодовых страниц.Если вы хотите, чтобы ваше регулярное выражение обрабатывало символы Дальнего Востока как отдельные символы, вам нужно будет либо использовать функции mb_ereg, либо функции preg с модификатором / u. mb_ereg доступен в PHP 4.2.0 и новее. Он использует тот же аромат POSIX ERE.

      Набор функций preg

      Все функции preg требуют, чтобы вы указали регулярное выражение в виде строки с использованием синтаксиса Perl. В Perl / regex / определяет регулярное выражение. В PHP это становится preg_match (‘/ regex /’, $ subject).Когда косая черта используется в качестве разделителя регулярного выражения, любые косые черты в регулярном выражении должны быть экранированы обратной косой чертой. Таким образом, http: // www \ .jgsoft \ .com / становится ‘/http:\/\/www\.jgsoft\.com\//’. Как и Perl, функции preg допускают использование любых не буквенно-цифровых символов в качестве разделителей регулярных выражений. Регулярное выражение URL было бы более читабельным как «% http: // www \ .jgsoft \ .com /%» с использованием знаков процента в качестве разделителей регулярных выражений, поскольку в этом случае вам не нужно избегать косой черты. Вам нужно будет избежать процентных знаков, если регулярное выражение их содержит.

      В отличие от языков программирования, таких как C # или Java, PHP не требует экранирования всех обратных косых черт в строках. Если вы хотите включить обратную косую черту в качестве буквального символа в строку PHP, вам нужно только экранировать ее, если за ней следует другой символ, который необходимо экранировать. В строках с одинарными кавычками нужно экранировать только одиночные кавычки и обратную косую черту. Вот почему в приведенном выше регулярном выражении мне не нужно было удваивать обратную косую черту перед буквальными точками. Регулярное выражение \\ для соответствия одиночной обратной косой черте станет ‘/ \\\\ /’ в качестве строки preg PHP.Если вы не хотите использовать интерполяцию переменных в своем регулярном выражении, вы всегда должны использовать строки в одинарных кавычках для регулярных выражений в PHP, чтобы избежать беспорядочного дублирования обратной косой черты.

      Чтобы указать параметры сопоставления регулярных выражений, такие как нечувствительность к регистру, задаются так же, как в Perl. ‘/ regex / i’ применяет регистр регулярных выражений без учета регистра. ‘/ regex / s’ заставляет точку соответствовать всем символам. ‘/ regex / m’ заставляет привязки начала и конца строки соответствовать встроенным символам новой строки в строке темы.’/ regex / x’ включает режим свободного интервала. Вы можете указать несколько букв, чтобы включить несколько параметров. ‘/ regex / misx’ включает все четыре параметра.

      Специальным параметром является / u, который включает режим сопоставления Unicode вместо 8-битного режима сопоставления по умолчанию. Вы должны указать / u для регулярных выражений, которые используют \ x {FFFF}, \ X или \ p {L} для соответствия символам Unicode, графемам, свойствам или скриптам. PHP интерпретирует ‘/ regex / u’ как строку UTF-8, а не как строку ASCII.

      Как и функция ereg, bool preg_match (шаблон строки, тема строки [, группы массивов]) возвращает ИСТИНА, если шаблон регулярного выражения соответствует строке темы или части строки темы.Если вы укажете третий параметр, preg сохранит подстроку, соответствующую первой группе захвата, в $ groups [1]. $ groups [2] будет содержать вторую пару и так далее. Если шаблон регулярного выражения использует именованный захват, вы можете получить доступ к группам по имени с помощью $ groups [‘name’]. $ groups [0] проведут общий матч.

      int preg_match_all (шаблон строки, тема строки, совпадения массива, флаги int) заполняет массив «совпадений» всеми совпадениями шаблона регулярного выражения в строке темы.Если вы укажете PREG_SET_ORDER в качестве флага, тогда $ match [0] будет массивом, содержащим совпадение и обратные ссылки первого совпадения, точно так же, как массив $ groups, заполненный preg_match. $ match [1] содержит результаты второго совпадения и так далее. Если вы укажете PREG_PATTERN_ORDER, тогда $ match [0] будет массивом с полными последовательными совпадениями регулярных выражений, $ match [1] массивом с первой обратной ссылкой из всех совпадений, $ match [2] массивом со второй обратной ссылкой каждого совпадения, пр.

      array preg_grep (шаблон строки, субъекты массива) возвращает массив, содержащий все строки в массиве «субъектов», которые могут быть сопоставлены шаблоном регулярного выражения.

      смешанный preg_replace (смешанный шаблон, смешанная замена, смешанный предмет [, int limit]) возвращает строку, в которой все совпадения с шаблоном регулярного выражения в строке темы заменены строкой замены. Производятся не более лимитные замены. Одним из ключевых отличий является то, что все параметры, кроме limit, могут быть массивами, а не строками. В этом случае preg_replace выполняет свою работу несколько раз, одновременно перебирая элементы в массивах. Вы также можете использовать строки для одних параметров и массивы для других.Затем функция будет перебирать массивы и использовать одни и те же строки для каждой итерации. Использование массива шаблона и замены позволяет выполнять последовательность операций поиска и замены в одной строке темы. Использование массива для строки темы позволяет выполнять одну и ту же операцию поиска и замены для многих строк темы.

      preg_replace_callback (смешанный шаблон, замена обратного вызова, смешанная тема [, int limit]) работает так же, как preg_replace, за исключением того, что второй параметр принимает обратный вызов вместо строки или массива строк.Функция обратного вызова будет вызываться для каждого совпадения. Обратный вызов должен принимать один параметр. Этот параметр будет массивом строк, с элементом 0, содержащим общее совпадение регулярного выражения, а для других элементов — текст, сопоставленный с помощью групп захвата. Это тот же массив, что и в preg_match. Функция обратного вызова должна возвращать текст, которым следует заменить совпадение. Верните пустую строку, чтобы удалить совпадение. Верните $ groups [0], чтобы пропустить это совпадение.

      Обратные вызовы

      позволяют выполнять мощные операции поиска и замены, которые нельзя выполнить с помощью одних только регулярных выражений.Например. если вы ищете регулярное выражение (\ d +) \ + (\ d +), вы можете заменить 2 + 3 на 5, используя обратный вызов:

       function regexadd ($ groups) {
        вернуть $ groups [1] + $ groups [2];
      } 

      array preg_split (шаблон строки, string subject [, int limit]) работает так же, как split, за исключением того, что он использует синтаксис Perl для шаблона регулярного выражения.

      См. Руководство по PHP для получения дополнительной информации о наборе функций preg

      .

      Набор функций ereg

      Функции ereg требуют, чтобы вы указали регулярное выражение в виде строки, как и следовало ожидать.ereg (‘regex’, «subject») проверяет соответствие регулярного выражения subject. При передаче регулярного выражения в виде буквальной строки следует использовать одинарные кавычки. Некоторые специальные символы, такие как доллар и обратная косая черта, также являются специальными символами в строках PHP с двойными кавычками, но не в строках PHP с одним кавычком.

      int ereg (шаблон строки, тема строки [, группы массивов]) возвращает длину совпадения, если шаблон регулярного выражения соответствует строке темы или части строки объекта, или ноль в противном случае.Поскольку ноль оценивается как False, а ненулевое значение — как True, вы можете использовать ereg в операторе if для проверки совпадения. Если вы укажете третий параметр, ereg сохранит подстроку, совпадающую с частью регулярного выражения между первой парой круглых скобок в $ groups [1]. $ groups [2] будет содержать вторую пару и так далее. Обратите внимание, что круглые скобки только для группировки не поддерживаются ereg. ereg чувствителен к регистру. eregi — эквивалент без учета регистра.

      строка ereg_replace (шаблон строки, замена строки, тема строки) заменяет все совпадения шаблона регулярного выражения в строке темы на заменяющую строку.Вы можете использовать обратные ссылки в строке замены. \\ 0 — это полное совпадение регулярного выражения, \\ 1 — первая обратная ссылка, \\ 2 — вторая и т. Д. Максимально возможная обратная ссылка — \\ 9. ereg_replace чувствителен к регистру. eregi_replace — эквивалент без учета регистра.

      array split (string pattern, string subject [, int limit]) разбивает предметную строку на массив строк с использованием шаблона регулярного выражения. Массив будет содержать подстроки между совпадениями регулярного выражения.Фактически совпавший текст отбрасывается. Если вы укажете ограничение, результирующий массив будет содержать не более указанного количества подстрок. Строка темы будет разделена не более чем limit-1 раз, а последний элемент в массиве будет содержать неразделенный остаток строки темы. split чувствителен к регистру. spliti — нечувствительный к регистру эквивалент.

      Дополнительную информацию о наборе функций ereg

      см. В руководстве по PHP.

      Набор функций mb_ereg

      Функции mb_ereg работают точно так же, как функции ereg, с одним ключевым отличием: в то время как ereg обрабатывает регулярное выражение и строку темы как серию 8-битных символов, mb_ereg может работать с многобайтовыми символами из различных кодовых страниц.Например. в кодировке Windows 936 (упрощенный китайский) слово 中国 («Китай») состоит из четырех байтов: D6D0B9FA. Использование функции ereg с регулярным выражением. в этой строке в результате будет получен первый байт D6. Точка соответствует ровно одному байту, поскольку функции ereg ориентированы на байты. Использование функции mb_ereg после вызова mb_regex_encoding («CP936») даст в результате байты D6D0 или первый символ 中.

      Чтобы убедиться, что ваше регулярное выражение использует правильную кодовую страницу, вызовите mb_regex_encoding () для установки кодовой страницы.Если вы этого не сделаете, вместо этого будет использоваться кодовая страница, возвращаемая или установленная mb_internal_encoding ().

      Если ваш сценарий PHP использует UTF-8, вы можете использовать функции preg с модификатором / u для сопоставления многобайтовых символов UTF-8 вместо отдельных байтов. Функции preg не поддерживают другие кодовые страницы.

      См. Руководство по PHP для получения дополнительной информации о наборе функций mb_ereg

      .

      Дополнительная литература

      Книга «Освоение регулярных выражений» не только объясняет все, что вы хотите знать и не хотите знать о регулярных выражениях.В нем также есть отличная глава о наборе функций PHP preg с подробностями о базовом механизме регулярных выражений PCRE и множеством примеров кода PHP, демонстрирующих более сложные методы. В книге не рассматриваются наборы функций ereg и mb_ereg.

      Моя рецензия на книгу Освоение регулярных выражений

      Сделайте пожертвование

      Этот веб-сайт только что сэкономил вам поездку в книжный магазин? Сделайте пожертвование в поддержку этого сайта, и вы получите неограниченный доступ к этому сайту без рекламы!

      .

      regex — теги php регулярного выражения

      Переполнение стека

      1. Около
      2. Продукты

      3. Для команд
      1. Переполнение стека
        Общественные вопросы и ответы

      2. Переполнение стека для команд
        Где разработчики и технологи делятся частными знаниями с коллегами

      3. Вакансии
        Программирование и связанные с ним технические возможности карьерного роста

      4. Талант
        Нанимайте технических специалистов и создавайте свой бренд работодателя

      5. Реклама
        Обратитесь к разработчикам и технологам со всего мира

      6. О компании

      .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

2021 © Все права защищены. Карта сайта