Необходимые регулярные выражения php

Объявление

Темы статьи: PHP Метки:

Синтаксис и регулярные выражения phpСегодня рассмотрим с вами регулярные выражения php, для кого то сложные, для кого то вообще не понятные, но очень нужные и полезные! Вообще, если вы еще не знаете что это такое, я вам поясню. Вот например, вы наверняка много раз уже где то регистрировались, даже взять любые форумы или социальные сети. При регистрации вас просят ввести желаемый логин, пароль и т.д. и т.п. логин должен состоять именно из латинских символов, но если вы введете на кириллице то система выдаст ошибку. Вот это и есть регулярные выражения, с помощью них и проверяется ввод данных. Тоже самое и правильный ввод e-mail адреса, который мы сегодня и будем разбирать.
Если у вас сервер настроен под кодировку windows-1251 то нужно именно этот скрипт сохранить в кодировке utf-8, про кодировки мы уже говорили в статье про кодировки php. Изменить кодировку можно вставив вот такой код:

header("Content-Type: text/html; charset=utf-8");

Код нужно вставлять в самое начало файла, чтоб вообще ничего не было выше него, этот код в php файле должен быть первым. Потому как может выдана быть ошибка. Сохранять файл в кодировке utf-8 нужно без BOM, сделать это можно в том же dreamweaver немного перенастроив. Хотя если вы не пользуетесь этой программой то и пока не советую начинать, все придет со временем! Сейчас просто сделайте это в бесплатном редакторе Notepad++, в верхнем меню выбрав кодировки, и поставив флажок на кодировке в utf-8 без bom.

Перейдем непосредственно уже на регулярные выражения php, где вы увидите готовый скрипт который разбирает e-mail адрес на части. Делается это с функцией «mb_ereg();». Вводится в нее три значения, в первое пишется само регулярное выражение, во второе строка, и в третье массив. Далее мы выведем все данные этой функции в цикле, где увидим на экране наш адрес разобранный по частям.

Код у нас получается такой, можете проверить:

$str = "betmenik@mail.ru";

$mass = array();

mb_ereg(":([a-z0-9_.-]+)@(([a-z0-9\-]+\.)+[a-z]{2,6})$",$str,$mass);

foreach($mass as $var) {

echo $var."<br>";

}

/*Выведет:
betmenik@mail.ru
betmenik
mail.ru
mail.
*/

Есть очень похожая функция «mb_eregi();», работает все точно также только эта функция выполняет свои действия без учета регистра.

Объявление

Поиск чего либо в строке с помощью регулярных выражений можно вести разный, это зависит от вашей фантазии и того, для чего либо вы вообще пишите скрипт. Эти выражения есть не только в php, они существуют наверно во всех языках программирования! Но, везде есть свои особенности и функции, хотя принцип один и тот же.
Давайте рассмотрим символы которые используются когда мы пишем эти регулярные выражения php.

^ — Символ привязки к началу строки.
$ — Символ привязки к концу строки.
Далее между этими символами пишется само условие, шаблон, то есть что нам нужно искать в строке. Пишется все в квадратных скобках.

[09] – Число 0 или 9.
[0-9] – Число от 0 до 9.
[абв] – Буквы а, б, в.
[а-я] – Буквы от а до я.
(Также важен регистр, ищем маленькие буквы, значит и пишем маленькие, если большие то большие.)
[а-яА-Я] – Все буквы, и большие и маленькие.
[0-9а-яА-Яa-zA-Z] – Любая цифра и любая буква, как русская так и английская.

Можно еще и после скобки сразу же поставить еще один знак начала строки, тогда действие будет обратным. Например, если мы пишем «^[0-9]$» то должно быть в строке цифры от 0 до 9, а если же мы напишем «^[^0-9]$» то говорится что цифр от 0 до 9 вообще не должно быть. Вот таким образом работают регулярные выражения php, с помощью которых можно найти что либо в строке. Советую протестировать их на примере с помощью функции «mb_ereg();», задав свои условия. Например зададим поиск цифр в строке. Если цифры есть то выведем положительный результат, если нет, то отрицательный. Примерно вот такой код:

$str = "Строка с числом 7";

if (mb_ereg("^[0-9]$",$str)) {

echo "Есть число";
 } else {

echo "Нет числа";

}
Автор статьи: Илья Якушин
Понравилась статья?

Нравится

Если Вам понравилась статья, Вы можете внести любую сумму на развитие блога. Буду Вам очень благодарен!