Главная
домен в подарок! подробнее

каталог сайтов www.poiu.ru закрыт. копия сайта www.myphp.net.ru сделана мной без согласия автора, подробнее тут


preg_replace

(PHP 3>= 3.0.9, PHP 4 >= 4.0.0)

preg_replace -- Осуществляет поиск и замену текста с помощью регулярного выражения.

Описание

 mixed preg_replace (mixed pattern, mixed replacement, mixed subject [, int limit])

 Ищет в subject строки, соответствующие регулярному выражению и заменяет их в на replacement. Если limit указан, тогда только limit  число соответствий будет заменено; если limit не определен или равен 1, то все соответствия будут заменены.

Replacement может содержать ссылки в форме \\n или (с PHP 4.0.4) $n, причем последняя форма является привилегированной. Каждая такая ссылка будет заменена текстом, зафиксированным n-ым  введенным шаблоном. n может быть от 0 до 99, причем \\0 или $0 ссылается на текст, соответствующий всему шаблону. Элементы - круглые скобки - считаются слева направо (начиная с 1), чтобы получить номер подшаблона.

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

Каждый параметр в preg_replace() может быть массивом.

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

Если pattern и replacement являются массивами, то preg_replace() берет значение из каждого массива и использует их для поиска и замены в subject. Если replacement имеет меньшее количество значений, чем pattern, то для последующих замен используется пустая строка. Если pattern является массивом, а replacement - строкой, то эта строка замены будет использована для каждого элемента pattern. Обратное просто не имело бы смысла.

Модификатор /e заставляет preg_replace() обрабатывать параметр replacement как PHP код после того, как были сделаны соответствующие замены. Совет: убедитесь, что replacement содержит верный PHP код, иначе PHP будет сообщать о ошибке в строке с preg_replace().

 

Пример 1. Замена нескольких значений

$patterns = array ("/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/",
                   "/^\s*{(\w+)}\s*=/");
$replace = array ("\\3/\\4/\\1\\2", "$\\1 =");
print preg_replace ($patterns, $replace, "{startDate} = 1999-5-27");
Этот пример выведет на экран:
$startDate = 5/27/1999

Пример 2. Использование модификатора /e 

preg_replace ("/(<\/?)(\w+)([^>]*>)/e",
              "'\\1'.strtoupper('\\2').'\\3'",
              $html_body);

Скрипт сделает все буквы HTML тега прописными.

Пример 3. Преобразование HTML в текст

// $document должен содержать HTML код.
// Следующий скрипт удалит все теги и секции javascript
// и пробелы. Он также преобразует некоторые распространенные
// HTML объекты в их текстовой эквивалент.
$search=array("'<script[^>]*?>.*?</script>'si",//Strip out javascript
                 "'<[\/\!]*?[^<>]*?>'si",  // Strip out html tags
                 "'([\r\n])[\s]+'",  // Strip out white space
                 "'&amp;(quot|#34);'i",  // Replace html entities
                 "'&amp;(amp|#38);'i",
                 "'&amp;(lt|#60);'i",
                 "'&amp;(gt|#62);'i",
                 "'&amp;(nbsp|#160);'i",
                 "'&amp;(iexcl|#161);'i",
                 "'&amp;(cent|#162);'i",
                 "'&amp;(pound|#163);'i",
                 "'&amp;(copy|#169);'i",
                 "'&amp;#(\d+);'e");

$replace = array ("",
                  "",
                  "\\1",
                  "\"",
                  "&amp;",
                  "<",
                  ">",
                  " ",
                  chr(161),
                  chr(162),
                  chr(163),
                  chr(169),
                  "chr(\\1)");

$text = preg_replace ($search, $replace, $document);

Примечание: Параметр limit был добавлен после PHP 4.0.1pl2.

<-Назад

Список всех функций

Если вы заметили ошибку, неточность, либо хотите опубликовть свой перевод неуказанных в разделе функций, пожалуйста, напишите по этому адресу.