Регулярные выражения в PHP часть 4 (preg_replace_callback, preg_quote, preg_grep, preg_split)

В предыдущей части "Регулярные выражения в PHP (preg_replace) часть 3"обсуждалась функции preg_replace, preg_match и preg_match_all. Это самые популярные функции для работы с регулярными выражениями. Они используются чаще всего. Но есть и другие, которые рассмотрим в этой статье.

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] => кот на крыше
)
Это конец темы регулярных выражений. Поэтому ещё раз напомним, что регулярными выражениями необходимо пользовать только в том случае, если нет никакого другого выхода.

Ошибки в регулярных выражениях - это очень частое явление. Поэтому прибегайте к этому инструменту только в самых-самых безвыходных случаях, когда не остаётся ничего другого.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, покупка SSL сертификатов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: