КомпютриПрограмиране

PHP (регулярен) - какво е това? Примери и проверка на регулярни изрази

При работа с текст във всеки модерен език за програмиране, разработчиците постоянно се срещат с целите на въвеждане на валидиране за спазване на желания шаблон, търсене и замяна на изпитване фрагменти и други видове операции по обработката на информация характер. Разработване на собствени алгоритми за валидиране води до загуба на време, код съвместимостта и сложност в неговото развитие и модернизация на.

Бързото развитие на езиците, на интернет и уеб-дизайн изисква създаването на гъвкави и компактни средства за обработка на текст, който има необходимата за този код минимална сума. Това не е изключение и е популярен сред начинаещи и професионални разработчици на PHP език. регулярен израз език, тъй като текстът шаблони за опростяване на задачата за обработка на текст и да се намали код за десетки и стотици линии. Много проблеми не могат да бъдат решени изобщо без него.

Регулярни изрази в PHP

PHP език има три механизма за работа с регулярни изрази - «ereg», «mb_ereg» и «прег». Най-често е интерфейс «прег», чиито функции осигуряват достъп до библиотеката на регулярен израз подкрепата на PCRE, първоначално разработена за езика Perl, който е включен в пакета на PHP. Прег-търсещи функции в даден текстов низ съвпадение, според определен модел на езика на регулярните изрази.

синтактични Основи

Като част от кратка статия е невъзможно да се опише подробно целия регулярен израз синтаксис, за това има специална литература. Представяме само основните елементи да покаже възможности за разработчик и да разберат примери кода.

В PHP регулярен израз е официално определено много трудно и затова опростяване на описанието. А изразът е текстов низ. Тя се състои от специален сепаратор шаблон и модификатора посочат начина да се справя. Възможност за включване в различните алтернативи и повторения на мотиви.

Например, в експресионен / \ г {3} - {2} \ г - \ г {2} / m делител е "/", последвано от шаблона и символ «т» е модификатор.

Цялата мощ на регулярните изрази се кодира с помощта на мета-символи. Основният език метасимволът е наклонената черта - "\". Той се променя вида на символите на обратното (т.е.. Е. превръща в обикновен характер маска и обратно). Друг важен метасимволът е права линия «|», посочва алтернатива шаблона. Още примери за мета-символи:

^ Започнете обект или низ
( Започнете от знака
) Край част от знака
{ Старт квантор
} Край квантор
\ г десетичната цифра 0-9
\ D който и да е герой, който не е число
\ ите празен символ, пространство, в раздела,
\ w речник на символите

PHP, обработка на регулярни изрази, космически разглежда като отделна валиден знак, така че изразът на XYZ и ABC, където са различни.

част от невидимия

В PHP редовни част от невидимия чрез скоби, и те понякога се наричат "subexpressions". Изпълнете следните функции:

  1. алтернативи разпределение. Например, моделът на топлина (нещо | Bird |) съвпада с думите "топлина", "Жар птица" и "гореща". И без скобите това ще е само празен низ "птица" и "гореща".

  2. "Спектакълът" част от знака. Това означава, че ако моделът съответства подниз, след което се връща всички мачове. За по-голяма яснота, ние дам един пример. Като се има предвид следното регулярния израз: победителят получава ((злато | позлатени) (медал | чаша)) - и низ за мачове ", победителят печели златен медал." В допълнение към първоначалната фраза, ще бъдат издадени на резултатите от търсенето: "Златен медал", "медали", "злато".

Оператори повторения (kvadrifikatory)

При формирането на регулярния израз, често е необходимо да се анализират повторение на цифри и символи. Това не е проблем, ако не и много повторения. Но какво да се прави, когато не знаем точния им брой? В този случай е необходимо да се използват специални метасимвола.

За описание на повторения, използвани kvadrifikatory - метасимвола да се уточни броя. Kvadrifikatory са два вида:

  • често в скоби;
  • намалена.

Общ квантор допир с минимален и максимален брой повторения оставя елемент във формата на две числа в скоби, като х {2,5}. Ако максималният брой повторения не е известен, втория аргумент не е посочено: х {2}.

Съкратените quantifiers са символ за най-често срещаните повторения, за да се избегне ненужното синтаксис претоварване. Обикновено има три разфасовки:

1. * - нула или повече повторения, което е еквивалентно на {0}.

2. + - един или повече повторения, т.е. {1} ...

3.? - нула или само едно повторение - {0,1}.

Примери регулярен

За тези, които се учат на регулярни изрази, примери - най-добрият учебник. Ние даваме няколко, които показват възможностите им с минимум усилия. Всички код е напълно съвместим с версии на PHP 4.x и по-горе. За да се разбере напълно синтаксиса и използването на всички езикови особености, които препоръчваме книгата на J .. Фридл, "регулярни изрази", което напълно се счита синтаксис, а има и примери за тези изрази не само PHP, но също така и за Python, Perl, MySQL, Java, Ruby, и C #.

Валидиране Е-мейл адрес

Задача. Има интернет страница, на която се иска посетителят адрес имейл. Регулярният израз трябва да се провери коректността на адресите, преди изпращането на съобщения. Проверка не гарантира, че посочената пощенска кутия действително съществува и получава съобщения. Но разчиствате очевидно грешни адреси тя може.

Решение. Както при всеки език за програмиране, в PHP проверка регулярен имейл адрес може да се прилага по различни начини, и примерите в тази статия не са окончателни и единственият избор. Поради това, във всеки случай, ние трябва да представи списък с изисквания, които трябва да бъдат взети предвид при програмирането и специфично изпълнение зависи изцяло от строителя.

По този начин, изразът, който тества валиден имейл, трябва да проверите на следните условия:

  1. Наличието на стартовата линия символа @, и няма пропуски.
  2. част на домейна на адреса на символа @, съдържа само валидни знаци за имена на домейни. Същото важи и за името на потребителя.
  3. При проверка на потребителското име е необходимо да се определи наличието на специални символи като апостроф или вертикална линия. Тези символи са потенциално опасни и могат да се съдържат в тези видове атаки, които SQL-инжекция. Избягвайте адреси.
  4. потребителски имена позволяват само една точка, която не може да бъде първият или последният знак в низа.
  5. Името на домейна трябва да съдържа най-малко две и не повече от шест символа.

Пример, като се вземат предвид всички тези условия може да се види на следващата фигура.

Валидиране на URL

Задача. Проверете дали определен текст низ е валидна на адрес URL. Още веднъж, ние се отбележи, че регулярните изрази URL проверка може да се прилага по различни начини.

Решение. Крайната ни версия е, както следва:

/^(https?:\/\/)?([\da-z\.-]+)\.([az\.]{2,6})([\/\w \ .-] *) * \ /? $ /

Сега анализираме неговите компоненти по-подробно с помощта на чертежа.

претенция 1 Преди URL адреса не трябва да има никакви знаци
претенция 2 Проверете наличието на задължителната представката «HTTP»
т.3 Не трябва да има символи
претенция 4 Ако има «а», води към защитена връзка «HTTPS»
претенция 5 Задължително част от "//"
претенция 6 Не са герои
стр. 7-9 Проверка на домейн първо ниво и наличието на точка
p.10-13 Проверка на домейн на написването на второ ниво и точката
p.14-17

структура на файла URL - набор от цифри, букви, долни тирета, точки, и наклонена черта в края

Проверете номера на кредитни карти

Задача. Трябва да се приложи валидиране на зададеният номер на кредитна карта от най-разпространените системи за плащане. А вариант само за карти Visa и MasterCard.

Решение. При създаването на изразяването, което трябва да се вземе предвид възможното наличие на пропуски във входната зала. Цифрите на картата са разделени на групи за по-лесно четене и диктовка. Поради това е естествено, че човек може да се опита да въведете номер по този начин (т.е.. Д. Използване на пространства).

Напиши универсален израз, който взема под внимание възможните интервали и тирета в, е по-сложно, отколкото просто да изхвърлите всички символи освен цифри. Ето защо, ние препоръчваме да използвате маска израз / D, която премахва всички символи освен цифри.

Сега можете да отидете директно на броя на чека. Всички компании, издатели на кредитни карти използват уникален номер формат. В примера се използва, и клиентът не трябва да въведете името на фирмата - тя се определя от броя. Visa карти винаги започват с цифрите 4 и са с дължина 13 или 16 цифри. MasterCard започва от порядъка на 51-55 с дълъг номер 16. В резултат на това, ние получаваме следния израз:

Преди обработката на поръчката може да бъде допълнително тествани последните цифри от номера, който се изчислява на алгоритъм Luhn.

Телефонният номер се потвърждава

Задача. Проверка на коректността на въведената телефонен номер.

Решение. Броят на цифрите в стационарни и мобилни телефонни номера, варират значително в зависимост от държавата, така че навсякъде се провери с помощта на регулярни изрази, телефонен номер правилно невъзможно. Но международни номера имат строго формат и са идеални за проверка на модела. Още по-така, че все повече и повече национални телефонни оператори се опитват да отговорят на същия стандарт. Стая структура е както следва:

+ CCC.NNNNNNNNNNxEEEE, където:

- C - е кода на страната, състоящ се от 1-3 цифри.

- N - брой до 14 цифри.

- Е - възможност за отделно.

Плюс това е незаменим елемент и знак X присъства само когато е необходимо удължаване на срока.

В резултат на това ние имаме следния израз:

^ \ + [0-9] {1,3 } \ [0-9] {4,14}. (:. Х +)? $

Числата в диапазона

Задача. Необходимо е да се гарантира, случайно число на определен диапазон. Освен това, необходимо е да се намери постоянен израз само номерата от обхват.

Решение. Ето няколко прояви на някои от най-често срещаните случаи:

Определя час 1 до 24 ^ (1 [0-2] | [1-9]) $
Ден през месец 1-31 ^ (3 [01] | [12] [0-9] | [1-9]) $
Секунди или минути 0-59 ^ [1-5]? [0-9] $
Редица от 1 до 100 * (100? | [1-9] [0-9]) $
Ден на 1-366 година ^ (36 [0-6] | 3 [0-5] [0-9] | [12] [0-9] {2} |? [1-9] [0-9]) $

Търсене на IP адреси

Задача. Необходимо е да се определи дали даден низ е валиден IP-адрес в IPv4 формат в диапазона от 000.000.000.000-255.255.255.255.

Решение. Както при всеки проблем на езика на PHP, регулярният израз има много varintov. Например това:

Онлайн проверка на изрази

Проверете регулярен правилно за начинаещи може да бъде трудно, защото на сложността на синтаксиса, който се различава от "редовни" езици за програмиране. За да се реши този проблем, има много онлайн тестери изрази, които позволяват лесно да се провери коректността на шаблона, който е създаден в реалния текст. Програмистът влиза данните на изразяване и проверка и веднага да видите резултата от обработката. Обикновено има представи справка раздел, в който се описва редовните изрази, примери и разликите изпълнение за най-продължителни езици.

Но за пълно доверие онлайн услуги резултати не се препоръчва за всички разработчици, които използват PHP. Регулярните изрази е писано и провери лично, повишава квалификацията и гарантира липсата на грешки.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 bg.unansea.com. Theme powered by WordPress.