preg_replace_callback
Функция preg_replace_callback очень похожа по своей работе на preg_replace, но позволяет ещё манипулировать содержанием карманов. К примеру, складывать значения в карманах. В отличии от preg_replace, у функции preg_replace_callback во втором параметре должно стоять название функции, которая будет применяться. В эту функцию будет передан массив из значений карманов:<?php
function Sum($a){
$sum = $a[1]+$a[2];
return $a[0] . $sum;
}
echo preg_replace_callback('#(.)\+(.)=#', 'Sum', '2+3=');
?>
В результате выполнения этого кода появится строчка:
2+3=5Разберёмся как она получается. Функции Sum будет передан массив из карманов: в нашем случае будет $a = array(0 => '2+3', 1 => '2', 2 => '3'). Внутри функции Sum происходит сложение значений карманов. Функция Sum возвращает строку, полученную из соединения найденного совпадения $a[0] и вычисленной суммы $a[1]+$a[2].
preg_quote
Функция preg_quote принимает регулярное выражение (строку) и возвращает её же, но с экранированными специальными символами. Это может быть полезно, если выражение формируется из нескольких частей вперемешку с PHP кодом. К примеру, "'#'.$a.'.'.$b.'#'".<?php
echo preg_quote('Тише! Мыши + сыр'); // вернёт "Тише\! Мыши \+ сыр"
?>
preg_grep
Функция preg_grep полезна для работы с массивами. Она принимает массив и возвращает отфильтрованный массив из элементов, которые подходят под регулярное выражение.<?php
$b = array('Тише', 'мыши', 'кот', 'на', 'крыше');
$a = preg_grep('#ыш#u', $b);
echo '<pre>';
print_r($a);
echo '</pre>';
?>
Под правило попадают только два элемента массива $b. Поэтому в результате выполнения кода примера будет выведено на экран:
Array ( [1] => мыши [4] => крыше )
preg_split
Функция preg_split работает как функция explode, которая разбивает строку на массив. Но только разбивает, учитывая регулярное выражение. Приведём пример:<?php
$a = preg_split('#, #u', 'Тише, мыши, кот на крыше');
echo '<pre>';
print_r($a);
echo '</pre>';
?>
Строка будет разбита по всем совпадениям. Получится такой массив:
Array ( [0] => Тише [1] => мыши [2] => кот на крыше )
Это конец темы регулярных выражений. Поэтому ещё раз напомним, что регулярными выражениями необходимо пользовать только в том случае, если нет никакого другого выхода.
Ошибки в регулярных выражениях - это очень частое явление. Поэтому прибегайте к этому инструменту только в самых-самых безвыходных случаях, когда не остаётся ничего другого.
Ошибки в регулярных выражениях - это очень частое явление. Поэтому прибегайте к этому инструменту только в самых-самых безвыходных случаях, когда не остаётся ничего другого.