ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Синтаксический анализ и обработка строк. Часть Третья.


25-05-2015

Квадратные скобки используются для задания диапазона возможных значений, который может принимать вид списка допустимых значений. Диапазон значений задается с помощью тире. Если диапазону предшествует символ Л, то допустимым значением становится любой символ, не входящий в последующий список значений. О таком двойственном значении этого символа необходимо помнить всегда.
Кроме списков и диапазонов, квадратные скобки могут содержать класс символов. Имена классов выделяются с обеих сторон двоеточиями. Для того чтобы подчеркнуть, что требуется указать только буквы, достаточно написать [:alpha:] . Допустимы следующие классы: alnum, alpha, blank, cntrl, digit, graph, lower, print, punct, space, upper и xdigit. Описание этих классов можно найти на man-странице функции ctype.
Наконец, две дополнительные квадратные скобки позволяют задавать начало и окончание слова - [:<:] и [:>:] . В этом смысле словом является любая последовательность алфавитно-цифровых символов и символ подчеркивания. Пример использования квадратных скобок показан в табл. 22.3.
Синтаксический анализ и обработка строк
22.4. Использование регулярных выражений в PHP-сценариях
Основной функцией, предназначенной для выполнения регулярных выражений, является функция ereg, которая проверяет строку в соответствии с регулярным выражением и возвращает значение TRUE, если шаблон, описанный в регулярном выражении, встречается в строке. Таким образом, эта функция с минимальными затратами позволяет проверить соответствие строки заданному шаблону. Например, с ее помощью можно убедиться в том, что почтовый индекс США соответствует стандарту, предусматривающему написание пяти цифр с последующим тире и еще четырьмя дополнительными цифрами.
В листинге 22.2 продемонстрирована реализация этой идеи, а на рис. 22.2 показан результирующий вывод.

Листинг 22.2. Проверка почтового индекса

<?php
/*
** Проверить почтовый индекс
** Этот сценарий проверяет почтовый индекс, который ** должен состоять из пяти цифр с необязательными ** последующими тире и четырьмя цифрами.
*/ /*
** если индекс задан, проверить его
*/
if(isset($_REQUEST['zip']))
{
if(ereg("*([0-9]{5})(-[0-9]{4})?tiny_mce_markerquot;, $_REQUEST['zip']))
{
print("{$_REQUEST['zip']} является допустимым почтовым индексом .<br>n"),-
}
else
{
print("{$_REQUEST['zip']} не <Ь>является</Ь> " .
" является допустимым почтовым индексом. <br>n");
}
}
// начальная форма
print("<form action="{$_SERVER['PHP_SELF']}">n"); print("<input type="text" name="zip">n"); print("<input type="submit">n"); print("</form>n");
?>
Синтаксический анализ и обработка строк
Этот сценарий предлагает форму для ввода почтового индекса, состоящего из пяти цифр, за которыми следуют тире и четыре цифры. Функциональность этого сценария соответствует регулярному выражению Л([0-9]{5})(-[0-9]{4})?$, которое сравнивается с пользовательским вводом. Полезно будет изучить это выражение подробнее.
Это выражение начинается с символа Л. Это означает, что сравнение строки будет производиться только сначала. Без этого почтовый индекс может начинаться с любого количества символов, как, например, строка abc12 34 5-12 34, и все равно он будет соответствовать шаблону. С другой стороны, символ доллара в конце выражения соответствует окончанию строки. Это не позволяет обнаружить соответствие для таких строк, как 12 34 5-12 34abc. Совместное использование символов Л и $ позволяет определить соответствие только строго определенных строк.
Первым субвыражением является ([0-9]{5}). Взятый в скобки диапазон позволяет указать только цифры от нуля до девяти. Фигурные скобки указывают на то, что должно быть только пять таких символов. Вторым субвыражением является (-[0-9]{4})? . Аналогично первому оно задает точно четыре цифры. Тире является символом, который должен предшествовать этим цифрам. Знак вопроса указывает на то, что все субвыражение должно либо соответствовать один раз или не соответствовать совсем. Это свидетельствует о том, что выражение, состоящее из четырех цифр, является необязательным.
Этот подход можно легко применить для проверки телефонных номеров или календарных дат. Регулярные выражения обеспечивают простой и удобный метод проверки переменных, возвращаемых формами ввода. Рассмотрим альтернативу использования вложенных операторов if и поиска строк с использованием функции strpos. 
Кроме того, существует возможность задать проверку соответствий выражений, возвращаемых в массиве. Это может пригодиться том случае, когда вы разбиваете строку на отдельные компоненты. Для демонстрации применения этого метода вполне подходит строка, которая используется браузером для самоидентификации. Данная строка содержит название браузера, версию и тип компьютера, на котором он работает. Размещение этой информации в отдельных переменных позволяет настроить Web-узел в соответствии с возможностями браузера.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Синтаксический анализ и обработка строк. Часть Вторая. PHP. Синтаксический анализ и обработка строк. Часть Четвёртая.