П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое







Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 98189 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 29077 раз(а).

Учебник HTML.
Просмотров 56199 раз(а).

Руководство по PHP5.
Просмотров 25939 раз(а).

Хостинг через призму DNS.
Просмотров 30466 раз(а).

Подборка текстов стандартных документов.
Просмотров 28980 раз(а).

Учебник PHP - Самоучитель
Просмотров 33729 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 34987 раз(а).

Внешние атаки...
Просмотров 26956 раз(а).

Учебник PHP.
Просмотров 22782 раз(а).

SSI в примерах.
Просмотров 17855 раз(а).



 
 



Руководство по PHP
Пред. След.

preg_replace_callback

(PHP 4 >= 4.0.5, PHP 5)

preg_replace_callback -- Выполняет поиск по регулярному выражению и замену с использованием функции обратного вызова

Описание

mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit] )

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

Пример 1. preg_replace_callback() пример

<?php
  
// Этот текст был использован в 2002 году
  // мы хотим обновить даты к 2003 году
  
$text = "April fools day is 04/01/2002\n";
  
$text.= "Last christmas was 12/24/2001\n";

  
// функция обратного вызова
  
function next_year($matches)
  {
    
// как обычно: $matches[0] -  полное вхождение шаблона
    // $matches[1] - вхождение первой подмаски,
    // заключенной в круглые скобки, и так далее...
    
return $matches[1].($matches[2]+1);
  }

  echo
preg_replace_callback(
              
"|(\d{2}/\d{2}/)(\d{4})|",
              
"next_year",
              
$text);

  
// результат:
  // April fools day is 04/01/2003
  // Last christmas was 12/24/2002
?>

Достаточно часто callback функция, кроме как в вызове preg_replace_callback(), ни в чем больше не участвует. Исходя из этих соображений, можно использовать create_function() для создания безымянной функции обратного вызова непосредственно в вызове preg_replace_callback(). Если вы используете такой подход, вся информация, связанная с заменой по регулярному выражению, будет собрана в одном месте, и пространство имен функций не будет загромождаться неиспользуемыми записями.

Пример 2. preg_replace_callback() и create_function()

<?php
  
/* фильтр, подобный тому, что используется в системах Unix
   * для преобразования в заглавные начальных букв параграфа */

  
$fp = fopen("php://stdin", "r") or die("can't read stdin");
  while (!
feof($fp)) {
      
$line = fgets($fp);
      
$line = preg_replace_callback(
          
'|<p>\s*\w|',
          
create_function(
              
// Использование одиночных кавычек в данном случае принципиально,
              // альтернатива - экранировать все символы '$'
              
'$matches',
              
'return strtolower($matches[0]);'
          
),
          
$line
      
);
      echo
$line;
  }
  
fclose($fp);
?>

Смотрите также preg_replace() и create_function().



 





Copyright © 2005-2011 Project.Net.Ru