|
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");
|
|
Этот пример выведет на экран:
Пример 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
"'&(quot|#34);'i", // Replace html entities
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e");
$replace = array ("",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
$text = preg_replace ($search, $replace, $document);
|
|
Примечание: Параметр limit
был добавлен после PHP 4.0.1pl2.
<-Назад
Список всех функций Если вы заметили ошибку, неточность, либо хотите опубликовть свой перевод неуказанных в разделе функций, пожалуйста, напишите по этому адресу.
|