Выполняет поиск в строке 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()
Результат:
Используя ksort(), получаем желаемый результат:
Результат:
|
В случае, если параметр 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_match_all(), и preg_split().
Пред. | Начало | След. |
preg_replace_callback | Уровень выше | preg_split |