Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Голосование

    Какую CMS Вы предпочитаете

    AtomX
    Fapos CMS
    Drunya CMS
Последние комментарии
Автор: чайник, в новости:

Что такое API и для чего они нужны

Автор: HIshnik, в новости:

Классы в PHP для чайников

Автор: Аноним, в новости:

Написание простого вируса в блокноте

Автор: stream, в новости:

Создаем BB коды на PHP

Топ пользователей
Drunya
Репутация: 108
Сообщений: 3527
Сашка_из_Шебекино
Репутация: 87
Сообщений: 1803
boriska
Репутация: 65
Сообщений: 846
ARMI
Репутация: 46
Сообщений: 1858
BAH0
Репутация: 26
Сообщений: 544
По чему именно в PHP, ведь регулярные выражения везде одинаковы? По тому, что я буду приводить конкретные примеры PHP функций и говорить обих особенностях. Конкретно будем рассматривать функцию preg_match(). Она может принимать на вход 2 обязательных параметра и один дополнительный. Первый параметр - это сама регулярка, второй - это строка, в которой осуществляется поиск, а третий необязательный параметр служит для записи в него найденых совпадений.

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

Пример
Code:
'#регулярка#'

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


Регулярные выражения могут состоять из управляющих символов, квантификаторов, модификаторов и обычных символов. С обычными символами, я думаю и так понятно - это символы,которые не несут дополнительной смысловой нагрузки в теле регулярного выражения, то есть, означают сами себя. Управляющие символы - это те которые несут смысловую нагрузку, позже я расскажу о них более подробно. Квантификаторы - это символы, которые задают жадность. О жадности поговорим позже. Модификаторы - это символы, которые указываются вне регулярного выражения и регулируют определенные правила поиска, о них тоже позже.



УПРАВЛЯЮЩИЕ СИМВОЛЫ
[ и ] - используются для описания возможных символов. Другими словами, все символы, что внутри квадратных скобок, трактуются как допустимые.
{ и } - используются для указания количества.
( и ) - позволяет извлекать определенные участки текста. При использовании третьего параметра preg_match(), участки выделеные скобками, заносятся в переменную, которая и является третим параметром.
. - любой символ
\w - любой символ из которого может состоять слово(буквы, цифры и пробелы)
\W - противоположность \w
\d - любая цифра
\D - противоположность \d
| - логическое или
\ - экранирует спец-символы
$ - символ конца строки
^ - символ начала строки




КВАНТИФИКАТОРЫ

Что бы понять что такое квантификаторы, надо понять, что такое жадность. Покажу на примере.
 1 
 2 
 3 
<?php $str 'aaaaaaaaaaa';
preg_match('#(a*)#'$str$match);
print_r($match);?>

Как думаете, сколько букв "а" попадет в переменную? Вот это изависит от жадности. В данном случае, все буквы попадут в переменную, так как по-умолчанию, все регулярки "жадные" и "кушают" максимально возможный объем. Теперь о том какие они вообще есть, эти квантификаторы:
* - ноль и более
+ - один и более
? - ноль или один

Пример
 1 
 2 
<?php //означает ноль и более любых символов
preg_match('#.*#'$str);?>




МОДИФИКАТОРЫ
Выше я уже говорил, что это такое, но повторюсь - это то что используеться за прделами самого шаблона(за решеткой).
 1 
 2 
<?php preg_match('##модификаторы'$str);?>
Думаю с этим все понятно. Теперь я покажу какие они есть и для чего их использовать.
i - регистронезависимый поиск
m - если использовать этот модификатор, символы начала и конца строки совпадают с местами перевода строк и после перевода. Другими словами, не фактического конца текста, а конца и начала отдельных строк.
U - инвертирует жадность квантификаторов
u - сообщает о том что надо всти сравнение с учетом кодировки UTF-8
s - использование этого модификатора приводит к тому, что точка считается любым символом, в том числе, символом перевода строки. Если этот модификатор не использовать, точка считается любым символом, кроме перевода строки.




КОЕ КАКИЕ ПРИМЕРЫ
Считается действительной, если в тексте есть один или более символов a, d или s, между началом и концом строки. Другими словами, вся строка должна состоять только из этих символов или их комбинации.
 1 
 2 
<?php preg_match('#^[ads]+$#'$str);?>

считается действительным, если в тексте в любом месте есть один или более символов, перечисленных в квадратных скобках
 1 
 2 
<?php preg_match('#[ads]+#'$str);?>

считается действительным, если в тексте в любом месте есть последовательность "ads"
 1 
 2 
<?php preg_match('#ads#'$str);?>

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

Теги: preg_match; php; htmk; парсинг текста; регулярные выражения;
Источник: Drunya
Автор: Drunya
Категория: PHP
Просмотров: 5137
Комментариев: 0

Сейчас online: 13. Зарегистрированных: 2. Гостей: 11.
-->