PHP-Fusion
v.7.01
AP-Fusion
v7.02.05
Pimped-Fusion-AP
v0.09.03
April 19 2024 08:29:49
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

lom
06/04/2018 14:03
Мы рады, ждем девятку. Очень хочется пощупать

Alipapa
27/03/2018 22:16
Всем привет, все неисправности устранили, всё у нас работает

mukaton
30/10/2015 02:37
Не получается ничего скачать. Ошибка Not Found

Alipapa
06/10/2015 23:00
9-я версия php-fusion на подходе, следите за новостями

Alipapa
10/11/2014 11:24
Заметь, я дважды ответил через 3 минуты после вопроса, могли бы уже решить

Последние статьи
· О стабилизаторах нап...
· СМС и Вебмани
· TinyMCE для пользова...
· PCRE (Perl Compatibl...
· PCRE (Perl Compatibl...
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения
PHP-Fusion 7 Bogatyr - бесп...
Моды, плагины
7133 1 Vveb--ws
08-10-2018 16:47
Php-Fusion v9. Первые впеча...
Вопросы по работе
4506 3 Vveb--ws
25-07-2018 13:46
Появился хэлп по PHP-Fusion...
Вопросы по работе
6735 7 Vveb--ws
25-07-2018 13:42
prestashop&ap-fusion
Вопросы по работе
17341 61 Alipapa
26-08-2014 10:29
Плагин магазина Ap-Shop
Моды, плагины
14585 70 Alipapa
18-08-2014 18:14
TinyMCE
Вопросы по работе
21099 55 Alipapa
27-07-2013 21:57
HTML-5
Моды, плагины
5431 1 Alipapa
15-06-2013 19:47
Мультиязычность в Pimped-Fu...
Ошибки, баги, глюки
6258 4 Papich
16-04-2013 12:39
Pimped-Fusion. Первые впеча...
Ошибки, баги, глюки
21691 127 Alipapa
18-12-2012 10:59
Ищу мод для расстановки код...
Моды, плагины
14999 55 Alipapa
17-09-2012 14:00
Как присоединить файл к лич...
Моды, плагины
8259 3 lom
27-05-2012 18:12
Что мне не нравится в после...
Вопросы по работе
6846 4 Alipapa
27-05-2012 18:08
Проблемы с добавлением кате...
Вопросы по работе
7740 5 Alipapa
27-05-2012 18:06

preg_match_all

(PHP 3>= 3.0.9, PHP 4 , PHP 5)

preg_match_all -- Выполняет глобальный поиск шаблона в строке

Описание

int preg_match_all ( string pattern, string subject, array &matches [, int flags [, int offset]] )

Ищет в строке subject все совпадения с шаблоном pattern и помещает результат в массив matches в порядке, определяемом комбинацией флагов flags.

После нахождения первого соответствия последующие поиски будут осуществляться не с начала строки, а от конца последнего найденного вхождения.

Дополнительный параметр flags может комбинировать следующие значения (необходимо понимать, что использование PREG_PATTERN_ORDER одновременно с PREG_SET_ORDER бессмысленно):

PREG_PATTERN_ORDER

Если этот флаг установлен, результат будет упорядочен следующим образом: элемент $matches[0] содержит массив полных вхождений шаблона, элемент $matches[1] содержит массив вхождений первой подмаски, и так далее.

<?php
preg_match_all
( "|<[^>]+>(.*)</[^>]+>|U" ,
    
"<b>example: </b><div align=left>this is a test</div>" ,
    
$out , PREG_PATTERN_ORDER );
echo
$out [ 0 ][ 0 ] . ", " . $out [ 0 ][ 1 ] . "\n" ;
echo
$out [ 1 ][ 0 ] . ", " . $out [ 1 ][ 1 ] . "\n" ;
?>

Результат работы примера:

<b>example: </b>, <div align=left>this is a test</div>
example: , this is a test

Как мы видим, $out[0] содержит массив полных вхождений шаблона, а элемент $out[1] содержит массив подстрок, содержащихся в тегах.

PREG_SET_ORDER

Если этот флаг установлен, результат будет упорядочен следующим образом: элемент $matches[0] содержит первый набор вхождений, элемент $matches[1] содержит второй набор вхождений, и так далее.

<?php
preg_match_all
( "|<[^>]+>(.*)</[^>]+>|U" ,
    
"<b>example: </b><div align=\"left\">this is a test</div>" ,
    
$out , PREG_SET_ORDER );
echo
$out [ 0 ][ 0 ] . ", " . $out [ 0 ][ 1 ] . "\n" ;
echo
$out [ 1 ][ 0 ] . ", " . $out [ 1 ][ 1 ] . "\n" ;
?>

Результат работы примера:

<b>example: </b>, example: 
<div align="left">this is a test</div>, this is a test

В таком случае массив $matches[0] содержит первый набор вхождений, а именно: элемент $matches[0][0] содержит первое вхождение всего шаблона, элемент $matches[0][1] содержит первое вхождение первой подмаски, и так далее. Аналогично массив $matches[1] содержит второй набор вхождений, и так для каждого найденного набора.

PREG_OFFSET_CAPTURE

В случае, если этот флаг указан, для каждой найденной подстроки будет указана ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет формат возвращаемых данных: каждое вхождение возвращается в виде массива, в нулевом элементе которого содержится найденная подстрока, а в первом - смещение. Данный флаг доступен в PHP 4.3.0 и выше.

В случае, если никакой флаг не используется, по умолчанию используется PREG_PATTERN_ORDER.

Поиск осуществляется слева направо, с начала строки. Дополнительный параметр offset может быть использован для указания альтернативной начальной позиции для поиска. Дополнительный параметр offset доступен, начиная с PHP 4.3.3.

Замечание: Использование параметра offset не эквивалентно замене сопоставляемой строки выражением substr($subject, $offset) при вызове функции preg_match_all(), поскольку шаблон pattern может содержать такие условия как ^, $ или (?<=x). Вы можете найти соответствующие примеры в описании функции preg_match().

Возвращает количество найденных вхождений шаблона (может быть нулем) либо FALSE, если во время выполнения возникли какие-либо ошибки.

Пример 1. Получение всех телефонных номеров из текста.

<?php
preg_match_all
( "/\(?  (\d{3})?  \)?  (?(1)  [\-\s] ) \d{3}-\d{4}/x" ,
                
"Call 555-1212 or 1-800-555-1212" , $phones );
?>

Пример 2. Жадный поиск совпадений с HTML-тэгами

<?php
// Запись \\2 является примером использования ссылок на подмаски.
// Она означает необходимость соответствия подстроки строке, зафиксированной
// второй подмаской, в нашем примере это ([\w]+).
// Дополнительный слеш необходим, так как используются двойные кавычки.

$html = "<b>bold text</b><a href=howdy.html>click me</a>" ;

preg_match_all ( "/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/" , $html , $matches );

for (
$i = 0 ; $i < count ( $matches [ 0 ]); $i ++) {
  echo
"matched: " . $matches [ 0 ][ $i ] . "\n" ;
  echo
"part 1: " . $matches [ 1 ][ $i ] . "\n" ;
  echo
"part 2: " . $matches [ 3 ][ $i ] . "\n" ;
  echo
"part 3: " . $matches [ 4 ][ $i ] . "\n\n" ;
}
?>

Результат работы примера:

matched: <b>bold text</b>
part 1: <b>
part 2: bold text
part 3: </b>

matched: <a href=howdy.html>click me</a>
part 1: <a href=howdy.html>
part 2: click me
part 3: </a>

Смотрите также preg_match(), preg_replace(), и preg_split().

Все функции PHP:
Навигация
· Новости
· Статьи
· Скачать
· Форум
· Ссылки
· Категории новостей
· Обратная связь
· Галерея
· Поиск
· CMS AP-Fusion. Отличия от PHP-Fusion
· Javascript справочник
· Техника
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 453
· Новый пользователь: ZDA
Информеры
Загрузка файлов  +  -
9,934,681 уникальных посетителей Iceberg by Harly