PHP-Fusion
v.7.01
AP-Fusion
v7.02.05
Pimped-Fusion-AP
v0.09.03
May 24 2018 15:00:39
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

lom
06/04/2018 14:03
Мы рады, ждем девятку. Очень хочется пощупать

Alipapa
27/03/2018 22:16
Всем привет, все неисправности устранили, всё у нас работает

mukaton
30/10/2015 02:37
Не получается ничего скачать. Ошибка Not Found

Alipapa
06/10/2015 23:00
9-я версия php-fusion на подходе, следите за новостями

Alipapa
10/11/2014 11:24
Заметь, я дважды ответил через 3 минуты после вопроса, могли бы уже решить

Последние статьи
· О стабилизаторах нап...
· СМС и Вебмани
· TinyMCE для пользова...
· PCRE (Perl Compatibl...
· PCRE (Perl Compatibl...
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения
Php-Fusion v9. Первые впеча...
Вопросы по работе
68 2 Alipapa
23-04-2018 13:47
Появился хэлп по PHP-Fusion...
Вопросы по работе
2139 5 lom
06-04-2018 14:04
prestashop&ap-fusion
Вопросы по работе
9547 61 Alipapa
26-08-2014 10:29
Плагин магазина Ap-Shop
Моды, плагины
5878 70 Alipapa
18-08-2014 18:14
TinyMCE
Вопросы по работе
13431 55 Alipapa
27-07-2013 21:57
HTML-5
Моды, плагины
1818 1 Alipapa
15-06-2013 19:47
Мультиязычность в Pimped-Fu...
Ошибки, баги, глюки
2668 4 Papich
16-04-2013 12:39
Pimped-Fusion. Первые впеча...
Ошибки, баги, глюки
12457 127 Alipapa
18-12-2012 10:59
Ищу мод для расстановки код...
Моды, плагины
8188 55 Alipapa
17-09-2012 14:00
Как присоединить файл к лич...
Моды, плагины
4940 3 lom
27-05-2012 18:12
Что мне не нравится в после...
Вопросы по работе
3204 4 Alipapa
27-05-2012 18:08
Проблемы с добавлением кате...
Вопросы по работе
3951 5 Alipapa
27-05-2012 18:06

preg_replace

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

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

Описание

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

Выполняет поиск в строке 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.

Пример 1. Использование подмасок, за которыми следует цифра

<?php
$string
= "April 15, 2003" ;
$pattern = "/(\w+) (\d+), (\d+)/i" ;
$replacement = "\${1}1,\$3" ;
echo
preg_replace ( $pattern , $replacement , $string );
?>

Результатом работы этого примера будет:

April1,2003

Если во время выполнения функции были обнаружены совпадения с шаблоном, будет возвращено измененное значение 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 );
?>

Результат:

The bear black slow jumped over the lazy dog.

Используя ksort(), получаем желаемый результат:

<?php

ksort
( $patterns );
ksort ( $replacements );

echo
preg_replace ( $patterns , $replacements , $string );

?>

Результат:

The slow black bear jumped over the lazy dog.

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

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

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

Пример 3. Замена по нескольким шаблонам

<?php
$patterns
= array ( "/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/" ,
                   
"/^\s*{(\w+)}\s*=/" );
$replace = array ( "\\3/\\4/\\1\\2" , " $\\ 1 =" );
echo
preg_replace ( $patterns , $replace , "{startDate} = 1999-5-27" );
?>

Этот пример выведет:

$startDate = 5/27/1999

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

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

Преобразует все HTML-теги к верхнему регистру

Пример 5. Конвертор HTML в текст

<?php
// $document на выходе должен содержать HTML-документ.
// Необходимо удалить все HTML-теги, секции javascript,
// пробельные символы. Также необходимо заменить некоторые
// HTML-сущности на их эквивалент.

$search = array ( "'<script[^>]*?>.*?</script>'si" ,   // Вырезает javaScript
                 
"'<[\/\!]*?[^<>]*?>'si" ,            // Вырезает HTML-теги
                 
"'([\r\n])[\s]+'" ,                  // Вырезает пробельные символы
                 
"'&(quot|#34);'i" ,                  // Заменяет HTML-сущности
                 
"'&(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" );                     // интерпретировать как php-код

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

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

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

Смотрите также preg_match(), preg_match_all(), и preg_split().

Все функции PHP:
Навигация
· Новости
· Статьи
· Скачать
· Форум
· Ссылки
· Категории новостей
· Обратная связь
· Галерея
· Поиск
· CMS AP-Fusion. Отличия от PHP-Fusion
· Javascript справочник
· Техника
Сейчас на сайте
· Гостей: 1

· Пользователей: 0

· Всего пользователей: 453
· Новый пользователь: ZDA
Информеры
Загрузка файлов  +  -
7,667,439 уникальных посетителей Iceberg by Harly