   #PHP Manual Regular Expression Functions (Perl-Compatible) preg_quote
   preg_replace

   PHP Manual
   Prev  Next
   ______________________________________________________________________

                             preg_replace_callback

   (PHP 4 >= 4.0.5)
   preg_replace_callback -- Perform a regular expression search and
   replace using a callback

Description

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

   The behavior of this function is almost identical to preg_replace(),
   except for the fact that instead of replacement parameter, one should
   specify a callback that will be called and passed an array of matched
   elements in the subject string. The callback should return the
   replacement string.

   Example 1. preg_replace_callback() example
   <?php
     // this text was used in 2002
     // we want to get this up to date for 2003
     $text = "April fools day is 04/01/2002\n";
     $text.= "Last christmas was 12/24/2001\n";
     // the callback function
     function next_year($matches) {
       // as usual: $matches[0] is the complete match
       // $matches[1] the match for the first subpattern
       // enclosed in '(...)' and so on
       return $matches[1].($matches[2]+1);
     }
     echo preg_replace_callback(
                 "|(\d{2}/\d{2}/)(\d{4})|",
                 "next_year",
                 $text);
     // result is:
     // April fools day is 04/01/2003
     // Last christmas was 12/24/2002
   ?>

   You'll often need the callback function for a preg_replace_callback()
   in just one place. In this case you can use create_function() to
   declare an anonymous function as callback within the call to
   preg_replace_callback(). By doing it this way you have all information
   for the call in one place and do not clutter the function namespace
   with a callback functions name not used anywhere else.

   Example 2. preg_replace_callback() and create_function()
   <?php
     /* a unix-style command line filter to convert uppercase
      * letters at the beginning of paragraphs to lowercase */
     $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(
                 // single quotes are essential here,
                 // or alternative escape all $ as \$
                 '$matches',
                 'return strtolower($matches[0]);'
             ),
             $line
         );
         echo $line;
     }
     fclose($fp);
   ?>

   See also preg_replace() and create_function().
   ______________________________________________________________________

   Prev       Home         Next
   preg_quote  Up  preg_replace
