|
|
|
Функции для работы с регулярными выражениями
preg_replace()
Синтаксис:
preg_replace ( pattern , replacement , subject[, limit [, count ]] )
Поддерживается следующими версиями PHP:
Описание функции:
Функция preg_replace ищет совпадения регулярного выражения (pattern) с данными в строке (subject) и заменяет их на данные находящиеся в replacement.
Аргумент |
Описание |
Тип |
pattern |
Обязательный аргумент. Регулярное выражение (шаблон поиска)
|
string, array |
replacement |
Обязательный аргумент. Строка или массив с данными используемыми для замены данных в subject
Аргумент может быть ссылкой имеющий вид $n или \\n, где n - номер подмаски из шаблона поиска. n для подмаски может принимать значения от 1 до 99. Ссылка $0 выдаст полное совпадение шаблона.
Также для ссылок можно использовать конструкцию вида \${1} равнозначную \$1, это конструкция используется если после ссылки идет сразу цифра (\${1}1). |
string, array |
subject |
Обязательный аргумент. Строка или массив с данными которые будут заменены. |
string, array |
limit |
Необязательный аргумент. Максимально количество замен. По умолчанию равно -1 (не ограниченно) |
int |
count |
Необязательный аргумент. Переменная в которой содержится количество произведенных замен. |
int |
Функция preg_replace() может использоваться с модификатором /e. При наличии этого модификатора параметр replacement интерпретируется как PHP-код и затем используется для замены.
Регулярные выражения
Отдельно следует остановится на регулярных выражениях, без представления о которых довольно трудно (если вообще возможно) разобраться с работой функции preg_replace().
Достаточно хорошо описание регулярных выражений приводится на wikipedia.org, основные моменты применения регулярных выражений также описаны здесь.
Примеры:
Пример 1:
В этом примере заменяем все цифры помещенные в скобки на звездочки.
<?php
$str = "(945)-55-34-33(02)";
$arr_str = preg_replace("/\([0-9]+\)/", "***",$str);
print_r ($arr_str);
?>
Результат:
***-55-34-33*** |
Пример 2:
В этом примере заменяем строку соответствующую всему шаблону, данными соответствующими первой подмаске по ссылке \$1. Другими словами "have 3 apples", соответствующие "/(\w+) (\d+) (\w+)/", будет заменено на "have", соответствующее (\w+).
<?php
$str = "I have 3 apples";
$pattern = "/(\w+) (\d+) (\w+)/";
$replacement = "\$1";
echo preg_replace($pattern, $replacement, $str);
?>
Результат:
I have |
Пример 3:
В этом примере показано, что произойдет если в качестве pattern и replacement использовать массивы.
<?php
$pattern = array('/1/','/2/','/3/');
$replacement = array("одно","две","три");
$str= "У меня есть 1 яблоко, 2 груши и 3 апельсина.";
$str_replace = preg_replace($pattern, $replacement, $str);
print ($str_replace);
?>
Результат:
У меня есть одно яблоко, две груши и три апельсина. |
Пример 4:
В этом примере показано, что произойдет если в качестве pattern, replacement и subject использовать массивы.
<?php
$pattern = array('/1/','/2/','/3/');
$replacement = array("одно","две","три");
$str[0]= "У меня есть 1 яблоко, 2 груши и 3 апельсина.";
$str[1]= "У меня есть 1 слива и 3 банана.";
$str_replace = preg_replace($pattern, $replacement, $str);
print_r ($str_replace);
?>
Результат:
Array ( [0] => У меня есть одно яблоко, две груши и три апельсина. [1] => У меня есть одно слива и три банана. ) |
Пример 5:
В этом примере показано использование модификатора /e, т.е когда replacement интерпретируется как php код. Ниже показано преобразование символов из нижнего в верхний регистр.
<?php
$str = preg_replace("/(\w+)/e","strtoupper('$1')", "hello");
print ($str);
?>
Результат:
HELLO |
Пример 6:
В этом примере показано использование аргумента count. Здесь результат будет равен 2, так произошло две замены.
<?php
$str = preg_replace("/(\d+)/","*", "У меня есть 3 ручки и 2 карандаша",-1,$itogo);
print ($itogo);
?>
Результат:
2 |
Статьи по теме "Секреты вебмастера"
|
|
PCRE функции
|