ТОП-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. Кодирование и декодирование. Часть Двадцатая.


26-01-2015

boolean preg_match(string pattern, string text, array matches, integer flags)
Функция preg_match (листинг 12.80) представляет собой аналог функции ereg, совместимый с Perl. Она оценивает аргумент pattern как регулярное выражение и пытается отыскать совпадения в данных, переданных аргументом text. Если задан необязательный аргумент matches, в массив добавляется каждое новое совпадение. Значение TRUE возвращается, если будет найдено как минимум одно совпадение, в противном случае возвращается значение FALSE.
Первый элемент массива matches, имеющий нулевой индекс, должен содержать совпадения для всего регулярного выражения. Последующие элементы этого массива содержат совпадения для подвыражений. В примере эти выражения взяты в скобки.
Для того чтобы функция preg_match возвращала смещение каждого найденного совпадения, аргумент flags должен иметь значение PREG_OFFSET_CAPTURE.

Листинг 12.80. Функция preg_match

<?php
// показать пользовательского агента print(" Пользовательский агент: {$_SERVER['HTTP_USER_AGENT']}<br>n");
// сделать попытку проанализировать пользовательского агента if(preg_match("/*(.+)/([0-9]).([0-9]+)/", $_SERVER['HTTP_USER_AGENT'], $matches))
{
print("Полное совпадение: $matches[0]<br>n"); print("Браузер: $matches[1]<br>n"); print("Версия: $matches[2]<br>n"); print("Релиз: $matches[3]<br>n");
}
else
{
print(" Пользовательский агент не распознан");
}

integer preg_match_all (string pattern, string text, array matches, integer order)
Функция preg_match_all (листинг 12.81) подобна функции preg_match. Данные, переданные аргументом text, сравниваются с данными шаблона pattern, однако вместо завершения работы после обнаружения первого соответствия продолжается поиск последующих соответствий. Указание аргумента matches необходимо, и он принимает двумерный массив. Метод заполнения массива задается аргументом order. Ему могут задаваться две константы: PREG_PATTERN_ORDER (значение по умолчанию) и PREG_SET_ORDER. Этот флаг можно комбинировать с PREG_OFFSET_CAPTURE. Необходимо установить количество совпадений по полному шаблону.
Если задано значение PREG_PATTERN_ORDER, первый элемент массива matches будет содержать массив всех совпадений по полному шаблону. Другие элементы массива будут содержать массивы совпадений по субшаблонам. Если задано значение PREG_SET_ORDER, каждый элемент массива matches будет содержать массив, организованный наподобие массивов, созданных функцией preg_match. Первый элемент хранит полностью соответствующую строку. Все последующие элементы содержат совпадения по субшаблонам относительно этого совпадения. Если задано значение PREG_OFFSET_CAPTURE, возвращается смещение каждого совпадения.

Листинг 12.81. Функция preg_match_all

<?php
// создать тестовые данные
$paragraph = "Это <Ь>короткий</Ь> абзац. Несколько "; $paragraph .= "<Ь>слов</Ь> и <Ь>несколько фраз</Ь>, "; $paragraph .= "выделенных тегами <b>bold</b>. "; /*
** для поиска слов, выделенных жирным шрифтом, использовать PREG_PATTERN_ORDER
*/
preg_match_all("|<[*>]+>(.*)</[*>]+>|", $paragraph,
$match, PREG_PATTERN_ORDER); // распечатать полное совпадение
print("<b>Совпадения по субшаблонам</b>:<br>n"),• for($i=0; $i < count($match[0]); $i++)
{
print(htmlentities($match[0][$i]) . "<br>n");
}
print("<b>Совпадения по субшаблонам</b>:<br>n"),• for($i=0; $i < count($match[1]); $i++)
{
print(htmlentities($match[0][$i]) . "<br>n");
}
/*
** использовать PREG_SET_ORDER для поиска слов, выделенных жирным шрифтом
*/
preg_match_all("|<[*>]+>(.*)</[*>]+>|", $paragraph,
$match, PREG_SET_ORDER); foreach($match as $m)
{
print(htmlentities($m[0])); for($i=1; $i < count($m); $i++)
{
print(" (".htmlentities($m[$i]).")");
}
print("<br>n");

string preg_quote(string text, string delimiter)
Функция preg_quote возвращает значение, переданное аргументом text, с обратными косыми перед символами, имеющими специальное значение для функций этого раздела. Специальными символами являются
• + * ? [ Л ] $ ( ) { } = ! < > | :
Необязательный аргумент delimiter устанавливает заданный вами ограничитель.
string preg_replace(string pattern, string replacement, string text, integer limit)
Функция preg_replace (листинг 12.82) представляет собой аналог функции ereg_replace, совместимый с Perl. Она производит замену данных, переданных аргументом text и совпадающих с шаблоном, заданным аргументом pattern, значениями, которые заданы аргументом replacement. Само значение аргумента text не изменяется, а возвращается его измененная версия.
Если аргумент pattern содержит подвыражения в скобках, аргумент replacement должен содержать специальный код, определяющий, какое подвыражение будет заменяться. Эта форма использует две обратные косые черты с последующей одной цифрой от 0 до 9. Нуль соответствует всему выражению, а цифры 1-9 соответствуют совпадениям первых девяти подвыражений. Подвыражения нумеруются слева направо, что соответствует вложенным подвыражениям. Необязательным аргументом limit задается максимальное количество замен.

| Листинг 12.82. Функция preg_replace_
<?php
// поменять переводы строк на теги разрыва
$text = "строка1nстрока2nстрока3n";
print(preg_replace("|n|", "<br>", $text));
print("<hr>n");
//перемещать эти слова
$text = "one two three four";
print(preg_replace("|([a-z]+) ([a-z]+) ([a-z]+) ([a-z]+)|", "\4 \2 \1 \3", $text));
?>

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



<< Предыдущая статьяСледующая статья >>
PHP. Кодирование и декодирование. Часть Девятнадцатая. PHP. Кодирование и декодирование. Часть Двадцать Первая.