Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

PCRE-синтаксис (на базе языка Perl) .




Оба типа выполняют одни и те же функции, но имеют разный синтаксис.

Подробная документация по PCRE находится по адресу: www.php.net/manual/en/ref.pcre.php

______________________________________________

8.2. Возможности функции ereg

Функция ereg проверяет строку на соответствие регулярному выражению (поиск подстроки в строковой переменной)

На выходе функция ereg возвращает булево значение.

Таблица

Функция Выполняемее действия Примечание
ereg (n, m) Поиск подстроки в строковой переменной n – искомое выражение m – исходная строка Учитывается регистр
eregi (n, m) Поиск подстроки в строковой переменной n – искомое выражение m – исходная строка Не учитывается регистр

Пример использования функции ereg (с учетом регистра):

$phrase = “Я программирую на РНР”;

if (ereg (“PHP”, $phrase))

{ echo “Выражение найдено”; }

_______________________

Пример использования функции eregi (без учета регистра):

$phrase = “Я программирую на РНР”;

if (eregi (“php”, $phrase))

{ echo “Выражение найдено”; }

8.2.1. Поиск набора или интервала символов

Поиск фрагментов строки по заданному списку.

Пример аналогичный предыдущему (поиск набора символов):

$phrase = “Я программирую на РНР”;

if (ereg (“ [Pp] [Hh] [Pp] ”, $phrase))

{ echo “Выражение найдено”; }

Поиска интервала символов (набора букв в верхнем регистре от A до Z):

$phrase = “Я программирую на РНР”;

if (ereg (“ [ A-Z ] ”, $phrase))

{ echo “Буквы из заданного интервала найдены”; }

Поиска интервала символов (набора букв в нижнем регистре от a до z):

$phrase = “Я программирую на РНР”;

if (ereg (“ [ a-z ] ”, $phrase))

{ echo “ … ”; }

Поиска интервала символов (набора цифр от 0 до 9):

if (ereg (“ [ 0-9 ] ”, $phrase)) …

______________________________________________

___________________________________________________

С помощью символа ^ можно указать, каких символов не должно быть в искомом выражении

Пример приведенный ниже позволяет определить есть ли цифры в исходной строке:

if (ereg (“ [ ^ 0-9 ] ”, $phrase)) …

На выходе TRUE (истина) будет только, если в $phrase содержится как минимум один нецифровой символ.


8.2.2. Общие классы символов

Наиболее характерные наборы символов, используемых для фильтрации,

объединены в классы:

Таблица

Наименование класса Описание
alnum Все буквы латинского алфавита и цифры, A - Z, a - z и 0 - 9
alpha Все буквы A - Z, a - z
digit Все цифры 0 - 9
lover Все буквы в нижнем регистре a - z
print Все печатные символы, включая пробел
punct Все символы пунктуации, (кроме пробела и класса alnum)
space Все разделительные символы, включая табуляцию и перевод строки
upper Все буквы в верхнем регистре A - Z

Правила использования классов:

Класс символов вставляется в функцию с помощью конструкции

[: …: ]

вставляемый класс

 
 


Пример использование классов для определения присутствия цифр в строковой переменной:

if (ereg (“[ [: digit: ] ] ”, $phrase))


8.2.3. Проверка положения искомого символа

Символ ^, когда не является частью класса переменных, указывает на начало строки, а $ – на окончание.

С помощью этих символов проверяется, находится ли символ, соответственно в начале или в конце переменной ($phrase)

Пример:

if (ereg (“ ^ [ a-z ] ”, $phrase)) …

if (ereg (“ [ a-z ] $ ”, $phrase)) …

Пример определения только одной цифры в строковой переменной

if (ereg (“ ^[ [: digit: ] ] $ ”, $phrase))

__________________________________________________

Определение символа $ в строковой переменной:

if (ereg (‘ \$ ‘, $phrase)) …

if (ereg (“ \\$ ”, $phrase)) …


8.2.4. Поиск с помощью символов подстановки

Символ “точка” (.) в регулярном выражении является символом подстановки и соответствует произвольному символу.

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

$word = “tool”;

If (ereg (“ ^. oo. $ ”, $word))

{ echo “Выражение найдено”; }

__________________________

$word = “bold”;

$word = “book”;

_________________________________________________________

8.2.5. Определение количества искомых сочетаний символов

Символ (*) указывает на то, что последовательность встречается ноль или больше раз.

Символ (+) указывает на то, что последовательность встречается как минимум один раз

if (ereg (“^ ([ [:alpha: ] ] [ [: digit: ]]) + $ ”, $string)) …

_________________________

Определение количества повторений искомого соотношения символов.

В фигурных скобках указывается искомое количество повторений

Пример поиска двойного повторения искомых сочетаний:

if (ereg (“^ ([ [:alpha: ] ] [ [: digit: ]]) {2} $ ”, $string)) …

_________________________

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

if (ereg (“^ ([ [:alpha: ] ] [ [: digit: ]]) { 2,4 } $ ”, $string)) …

__________________________

Знак (?) указывает на то, что комбинация должна встретится не более одного раза

Пример поиска искомого сочетания:

if (ereg (“^ ([ [:alpha: ] ] [ [: digit: ]])? $ ”, $string)) …

эквивалентная запись:

if (ereg (“^ ([ [:alpha: ] ] [ [: digit: ]]) { 0,1 } $ ”, $string)) …

__________________________


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

Функция Выполняемые действия Примечание
ereg (n, m) Поиск подстроки в строковой переменной n – искомое выражение m – исходная строка Учитывается регистр
eregi (n, m) Поиск подстроки в строковой переменной n – искомое выражение m – исходная строка Не учитывается регистр

Обработка строковых переменных с использованием функций

Название функции Выполняемые действия
substr (m, n, x) Извлекает часть строки. Возвращает часть строковой переменной m, начиная с n - ой позиции, длиной в x символов
strlen (m) Определяет длину строки m
strpos (m, “n”) Определяет позицию символа или набора символов в строке. m – указывает где искать, n – указывает что искать
strstr (m, “n”) Извлекает часть строки (m) от совпадающей позиции (n) и до конца строки

8.2.7. Разбивка строк на компоненты

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

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

Функция Выполняемые действия Примечание
ereg (n, m, p) Поиск подстроки в строковой переменной n – искомое выражение m – исходная строка p – результат разделения исходной строки Учитывается регистр

Пример выделения частей адреса электронной почты:

$email = student@sut. ru;

if (ereg (“^ ([ ^@ ] +) @ ([ a-z \- ] + \.) + ([ a-z] {2,4}) $”, $email, $match))

{

echo “Почтовый ящик: ”. $match[ 1 ]. “<br>”;

echo “Имя домена второго уровня:”. $match[ 2 ]. “<br>”;

echo “Имя домена первого уровня:”. $match[ 3 ]. “<br>”;

}

Else

{ Электронный адрес некорректен ”; }

Результат работы сценария:

Почтовый ящик: student

Имя домена второго уровня: sut.

Имя домена первого уровня: ru

Элемент – $match[ 0 ] содержит полное найденное выражение.

подшаблон 1подшаблон 2подшаблон 3

           
     


ereg (“^ ([ ^@ ] +) @ ([ a-z \ – ] + \.) + ([ a-z ] {2,4}) $”, $email, $match)

       
 
   


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...