ТОП PHP скрипт сегодня: Build QR Code Generator with PHP and Ajax

Вы Тут:

Главная ›› Книги ›› PHP 5.0 для чайников ›› Квантификаторы

Квантификаторы в PHP

Представьте себе случай, когда нужно отобрать строки, в которых имеется комбинация символов ссс. Первое, что приходит на ум, - это применить шаблон, состоящий из одних литерал (ссс). Однако для решения подобных задач в регулярных выражениях типа POSIX применяют специальные символы, которые называются квантификаторы. Например, в нашем случае шаблон будет выглядеть следующим образом: с{3}. В фигурных скобках можно указывать не только конкретное количество повторений, но и диапазон. Например, шаблон с{2,3} будет соответствовать строкам, где содержатся сочетания символов сс или ссс. Если второй параметр опустить (с{2,}), то строка может содержать два и более символа с, идущих подряд.

На первый взгляд может показаться, что шаблоны с{2}, с{2,3} и с{2,} эквивалентны, так как если строка содержит два или более символа с, идущих подряд, то она будет соответствовать всем этим шаблонам. Однако не стоит спешить с выводами, различие все-таки есть. Рассмотрим листинг 15.6 в качестве примера.

Листинг 15.6. Использование квантификаторов в PHP.

<html>
<head>
<title> Использование квантификаторов </title>
</head>
<body>
<?php
eregi("c{2}" , "qwcccccccqw", $regs);
eregi("c{2,3}" , "qwcccccccqw", $regs);
eregi("c{2,}" , "qwcccccccqw", $regs);

// выведет "cc"
echo "<br>".$regs[0];

// выведет "ссс"
echo "<br>".$regs[1];

// выведет "ccccccc"
echo "<br>".$regs[2];
?>
</body>
</html>

Здесь мы проверяем соответствие шаблонам строки qwcccccccqw и записываем совпавшие комбинации в массив $regs. В результате значения элементов массива оказались сс, ссс и ссссссс. В этом и состоит отличие этих шаблонов.

Помимо фигурных скобок существует еще три квантификатора:

с+ - строка должна содержать один или более символов с , идущих подряд (с{1,});
с* - строка должна содержать ноль или более символов с , идущих подряд (с{0,});
с? - строка должна содержать ноль или один символ с (с{0,1}).

Смотрите информацию купить готовый торт на нашем сайте.