Книги наших сотрудников
 
Гостевая книга 

справочник функций

скачать учебник PHP

Форум PHP

Учебник по PHP 4

Сколько новых сайтов Вы делаете за год? результаты


Варианты ответов

Голосов

%

1 сайт 36950 13.2%
2-3 сайта 19315 6.9%
не больше 10 сайтов 13850 4.9%
10-20 сайтов 11282 4.0%
Так много, что не могу сосчитать 143799 51.4%
Я вообще не делаю сайты 54672 19.5%

Общее количество проголосовавших составляет: 279868

Оглавление

  1. Основы PHP
  2. Операторы языка PHP
  3. Строковые функции
  4. Массивы
  5. Функции
  6. Работа с файлами
  7. Регулярные выражения
  8. Сессии и cookies в PHP
  9. Работа с FTP
  10. Проверка данных
  11. Гостевая книга
  12. PHP и MySQL
Rambler's Top100
Яндекс цитирования
Rambler's Top100



Справочник функций PHP

Функции для работы с регулярными выражениями (Perl-совместимые)    Справочник функций PHP

preg_replace_callback

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

Синтаксис

mixed preg_replace_callback (mixed pattern, callback callback, mixed subject [, int limit])
Поведение этой функции во многом напоминает preg_replace(), за исключением того, что вместо параметра replacement необходимо указывать 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(). Если вы используете такой подход, вся информация, связанная с заменой по регулярному выражению, будет собрана в одном месте, и пространство имен функций не будет загромождаться неиспользуемыми записями.

Пример кода

<?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

Вверх

Следующая: preg_split

Если Вам нужна частная профессиональная консультация от авторов многих книг Кузнецова М.В. и Симдянова И.В., добро пожаловать в наш Консультационный Центр SoftTime.