Регулярные выражения в 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, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: