11111
preg_replace
- Выполняет поиск в строке subject совпадений с шаблоном
pattern и заменяет их на
replacement. В случае, если параметр
limit указан, будет произведена замена
limit вхождений шаблона; в случае, если
limit опущен либо равняется -1, будут заменены все вхождения шаблона.
- Replacement может содержать ссылки вида
\\n либо (начиная с PHP 4.0.4)
$n, причем последний вариант
предпочтительней. Каждая такая ссылка, будет заменена на подстроку, соответствующую
n'нной заключенной в круглые скобки подмаске.
n может принимать значения от 0 до 99, причем ссылка
\\0 (либо $0) соответствует вхождению всего шаблона.
Подмаски нумеруются слева направо, начиная с единицы.
- При использовании замены по шаблону с использованием ссылок на подмаски
может возникнуть ситуация, когда непосредственно за маской следует цифра.
В таком случае нотация вида \\n приводит к ошибке: ссылка на первую подмаску, за которой
следует цифра 1, запишется как \\11, что будет интерпретировано как ссылка на одиннадцатую подмаску.
Это недоразумение можно устранить, если воспользоваться конструкцией
\${1}1, указывающей на изолированную ссылку на первую подмаску, и следующую за ней
цифру 1.
- - Если во время выполнения функции были обнаружены совпадения с шаблоном,
будет возвращено измененное значение subject,
в противном случае будет возвращен исходный текст subject.
- Первые три параметра функции preg_replace()
могут быть одномерными массивами. В случае, если массив использует ключи, при обработке массива
они будут взяты в том порядке, в котором они расположены в массиве.
Указание ключей в массиве для pattern и replacement не
является обязательным.
Если вы все же решили использовать индексы, для сопоставления шаблонов и строк, участвующих в замене,
используйте функцию ksort() для каждого из массивов.
- Пример 2. Использование массивов с числовыми индексами в качестве аргументов функции preg_replace() <?php
$string = "The quick brown fox jumped over the lazy dog.";
$patterns[0] = "/quick/";
$patterns[1] = "/brown/";
$patterns[2] = "/fox/";
$replacements[2] = "bear";
$replacements[1] = "black";
$replacements[0] = "slow";
echo preg_replace($patterns, $replacements, $string);
?>
- Результат:
- Используя ksort(), получаем желаемый результат:
<?php
ksort($patterns);
ksort($replacements);
echo preg_replace($patterns, $replacements, $string);
?>
- Результат:
- В случае, если параметр subject является массивом,
поиск и замена по шаблону производятся для каждого из его элементов.
Возвращаемый результат также будет массивом.
- В случае, если параметры pattern и replacement являются
массивами, preg_replace() поочередно извлекает из обоих массивов
по паре элементов и использует их для операции поиска и замены.
Если массив replacement содержит больше элементов, чем
pattern, вместо недостающих элементов для замены будут взяты пустые строки.
В случае, если pattern является массивом, а replacement - строкой,
по каждому элементу массива pattern будет осущесвтлен поиск
и замена на pattern (шаблоном будут поочередно все элементы массива, в то время как строка замены остается фиксированной).
Вариант, когда pattern является строкой, а replacement - массивом, не имеет смысла.
- Модификатор /e меняет поведение функции preg_replace() таким образом,
что параметр replacement после выполнения необходимых подстановок интерпретируется как PHP-код и
только после этого используется для замены. Используя данный модификатор, будьте внимательны:
параметр replacement должен содержать корректный PHP-код,
в противном случае в строке, содержащей вызов функции preg_replace(), возникнет
ошибка синтаксиса.
- - - Замечание:
Параметр limit доступен в PHP 4.0.1pl2 и выше.
- Смотрите также preg_match(),
preg_replace_callback
preg_split
22222
The bear black slow jumped over the lazy dog.
The slow black bear jumped over the lazy dog.