Главная Мой профиль Регистрация Выход Вход
Вт
17.10.2017
08:54
Приветствую Вас Гость | RSS ВходРегистрацияГлавная
Поиск
Друзья сайта
Опрос
Сколько вам лет?
1. 13-15
2. 16-18
3. 22-29
4. 19-21
5. от 30 и более
6. до 12
Всего ответов: 579
Статистика




Онлайн всего: 1
Гостей: 1
Пользователей: 0



Главная » Уроки » Уроки PHP

Урок 14. Регулярные выражения.
______________________
УРОК 14. Регулярные выражения.
______________________



Это достаточно сложная и в то же время интересная тема. С помощью регулярных выражений можно производить необходимые проверки над переменными и манипуляции со строками. Регулярные выражения представляют собой шаблон и призваны проверить, соответствует ли ему строка. Совместно с проверкой может производиться выборка или замена найденной подстроки. PHP поддерживает два типа регулярных выражений - POSIX и Perl. Для каждого типа используются свои функции, и мы их рассмотрим на практике.

[ Регулярные выражения POSIX ]

Самые основы.


Представим себе строку j77ks7fs7 в которой все семерки нужно заменить пятерками. Как это сделать?
Воспользуемся функцией ereg_replace у которой есть три параметра - ereg_replace("регулярное_выражение", "новое_значение", строка в которой происходит поиск);

$text = "j77ks7fs7";
$newtext = ereg_replace("7", "5", $text);
echo $newtext;

В результате мы увидим строку, в которой все семерки заменены на пятерки - j55ks5fs5
Если нам нужно удалить вообще все цифры из строки, то регулярное выражение будет выглядеть так [0-9]. Квадратная скобочка описывает один символ. Вкунтри скобки через тире мы указали диапазон чисел от 0 до 9.
Если нужный нам символ не только любая цифра но и любая буква, то напишем так [0-9a-z].
Давайте попробуем заменить все цифры в строке на символ X

$text = "j137ks44jk5d";
$newtext = ereg_replace("[0-9]", "X", $text);
echo $newtext;
// результат: jXXXksXXjkXd

Если бы наше регулярное выражение выглядело как [0-9a-z] то заменены были бы не только цифры, но и все буквы кроме заглавных. Если заглавные нужно тоже заменить, то наше выражение было бы такое: [0-9a-zA-Z] оно заменяет все буквы верхнего и нижнего регистра. Или можно было бы использовать функцию eregi_replace(), она идентична предыдущей, но нечувствительна к регистру. Вот так вот.

Самые основы. Продолжение.


На сайтах часто можно встретить форматирование текста BB-тегами. Давайте напишем свои BB-теги которые будем заменять на HTML-теги в нашем регулярном выражении.
Но если мы напишем ereg_replace("[b]", "", $text) то регулярное выражение будет восприниматься как буква B, а квадратные скобки воспринимаются как служебные символы.
Чтобы они тоже учавствовали в поиске, необходимо перед каждой из них поставить знак слэш:

$text = "Hello world";
$newtext = ereg_replace("\[b\]", "", $text);
$newtext = ereg_replace("\[/b\]", "
", $newtext);
echo $newtext;

В тех случаях, когда нужно найти строку в которой встречаются спецсимволы, такие как $, ^, { и т. д., перед ними ставится символ обратной косой черты (\). Например, для того, чтобы найти в строке символ $, в регулярном выражении нужно написать "\$". Для поиска косой черты перед ней тоже нужно поставить слэш (\\)

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

$text = "парашют";
$newtext = ereg_replace("параш.т", "replaced", $text);

Регулярное выражение h.[0-3] будет соответствовать словам hi3, h52, hr0 и не будет сооветствовать hh9, hbk1, h8
Символ | означает логическое ИЛИ. Если у вас может встретиться тег или тег и их вам надо будет заменить, используется этот самый оператор.

$text = "hello";
$newtext = ereg_replace("|", "replaced", $text);

Давайте-ка закрепим всё на реальном примере. Представим что у нас есть строка, из которой нужно удалить все опасные теги и цифры.

$text = "hello34 world7";
$newtext = eregi_replace("|
Категория: Уроки PHP | Добавил: JUMP (04.02.2012)
Просмотров: 2705 | Теги: regular expressions, регулярки, preg_match, регулярные выражения | Рейтинг: 5.0/1


Форма входа
Логин:
Пароль:
Меню сайта
Категории
Класс 1
Здесь учат самым элементарным вещам. Этот уровень необходимо посетить тем, кто ещё плохо ориентируется в компьютерах.
Класс 2
Здесь даются основные навыки хакерства. Этот класс для тех кто давно на "ты" с компьютерами, изучил винду вдоль и поперёк, а потом устал просто так сёрфить по инету и решил научится ещё чему-нибудь ;)
Уроки PHP
Мини-уроки php by JUMP
Мини-чат
    Все материалы на сайте предоставлены исключительно в ознакомительных целях.
     Администрация не несет никакой ответственности за последствия их использования.