preg_replace

(PHP 4, PHP 5)

preg_replace — Выполняет поиск и замену по регулярному выражению


Описание

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

Выполняет поиск совпадений в строке subject с шаблоном pattern и заменяет их на replacement.


Список параметров

pattern -

Искомый шаблон. Может быть как строкой, так и массивом строк.

Также доступны некоторые модификаторы PCRE, включая 'e' (PREG_REPLACE_EVAL), специфичный только для этой функции.

replacement -

Строка или массив строк для замены. Если этот параметр является строкой, а pattern является массивом, все шаблоны будут заменены этой строкой. Если и pattern и replacement являются массивами, каждый элемент pattern будет заменен соответствующим элементом из replacement. Если массив replacement содержит меньше элементов, чем массив pattern, то все лишние шаблоны из pattern будут заменены пустыми строками.

replacement может содержать ссылки вида \\n, либо (начиная с PHP 4.0.4) $n, причем последний вариант предпочтительней. Каждая такая ссылка будет заменена на подстроку, соответствующую n-ой подмаске. n может принимать значения от 0 до 99, причем ссылка \\0 (либо $0) соответствует вхождению всего шаблона. Подмаски нумеруются слева направо, начиная с единицы. Для использования обратного слэша, его необходимо продублировать (строка PHP "\\\\").

При замене по шаблону с использованием ссылок на подмаски может возникнуть ситуация, когда непосредственно за маской следует цифра (например, установка цифры сразу после совпавшей маски). В таком случае нельзя использовать знакомую нотацию вида \\1 для ссылки на подмаски. Запись, например, \\11, смутит preg_replace(), так как она не сможет понять, хотите ли вы использовать ссылку \\1, за которой следует цифра 1 или же вы хотите просто использовать ссылку \\11, за которой ничего не следует. Это недоразумение можно устранить, если воспользоваться конструкцией \${1}1, использующей изолированную ссылку $1, и следующую за ней цифру 1.

При использовании модификатора e эта функция экранирует некоторые символы (а именно ', ", \ и NULL) в строках, замещающих обратные ссылки. Это сделано для удостоверения корректности синтаксиса при использовании обратных ссылок внутри одинарных или двойных кавычек (например, 'strlen(\'$1\')+strlen("$2")'). Убедитесь, что вы владеете синтаксисом обработки строк PHP для того, чтобы точно осознавать, как будет выглядеть интерпретированная строка.

subject -

Строка или массив строк для поиска и замены.

Если subject является массивом, то поиск с заменой осуществляется для каждого элемента массива subject, а возвращаемое значение также будет являться массивом.

limit -

Максимально возможное количество замен каждого шаблона для каждой строки subject. По умолчанию равно -1 (без ограничений).

count -

Если указана, то эта переменная будет заполнена количеством произведенных замен.


Возвращаемые значения

preg_replace() возвращает массив, если параметр subject является массивом, иначе возвращается строка.

Если найдены совпадения, возвращается новая версия subject, иначе subject возвращается нетронутым, в случае ошибки возвращается NULL.



Смотрите также:
Регулярные выражения в PHP.
Примеры регулярных выражения в PHP.
Описание на ru2.php.net
Описание на php.ru