Руководство по языку программирования PHP
 

PCRE
 

Функции для работы с регулярными выражениями

preg_replace_callback()

Синтаксис:

preg_replace_callback (pattern, callback, subject [, limit [, count ]])


Поддерживается следующими версиями PHP:

3
4.0.5
5
-
+
+

Описание функции:

Функция preg_replace_callback() ищет совпадения регулярного выражения (pattern) с данными в строке (subject), а затем передает массив найденных совпадений в функцию callback на обработку. Данные возвращенные функцией callback используются для замены совпадений в subject.

Аргумент
Описание
Тип
pattern

Обязательный аргумент. Регулярное выражение (шаблон поиска)

string, array
callback

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

callback
subject Обязательный аргумент. Строка или массив с данными которые будут заменены. string, array
limit

Необязательный аргумент. Максимально количество замен. По умолчанию равно -1 (не ограниченно)

int
count

Необязательный аргумент. Переменная в которой содержится количество произведенных замен.

int

С версии PHP 5.3 в функции preg_replace_callback() допустимо использовать anonymous function или create_function()

anonymous function - функция не имеющая названия.

create_function() - создает анонимную функцию из переданных параметров и возвращает уникальное имя для неё.

Следует помнить, что данные в функцию callback передаются в виде массива. Элемент массива с индексом [0] содержит все совпадение шаблона, а под индексами [1], [2]...n содержит вхождение соответствующей подмаски.

Примеры:

Пример 1:

В этом примере все латинские буквы из нижнего регистра будут переведены в верхний регистр.


$str = "php универсальный язык сценариев. html-язык разметки гипертекста ";

function str_apper($matches)
{
return strtoupper ($matches[0]);
}

echo preg_replace_callback("/[a-z]+/","str_apper",$str);
?>

Результат:

PHP универсальный язык сценариев. HTML-язык разметки гипертекста

Пример 2:

В этом примере показано использование подмасок.


$str = "11-09-2010";

function add_year($matches)
{
return $matches[1]."-".$matches[2]."-".($matches[3]+1);
}

echo preg_replace_callback("/(\d{2})-(\d{2})-(\d{4})/","add_year",$str);
?>

Результат:

11-09-2011

Пример 3:

В этом примере показано использование anonymous function.


echo preg_replace_callback('/[a-z]+/', function ($match) {
return strtoupper($match[0]);
}, 'php универсальный язык сценариев. html-язык разметки гипертекста');
?>

Результат:

PHP универсальный язык сценариев. HTML-язык разметки гипертекста

 

PCRE функции

preg_grep()
preg_filter()
preg_last_error()
preg_match()
preg_match_all()
preg_quote()
preg_replace()
preg_replace_callback()
preg_split()