Comunitatea PHP Romania
 

 
preg_replace_callback

preg_replace_callback

(PHP 4 >= 4.0.5, PHP 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.

Exemplu 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.

Exemplu 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().

Ultimele discutii in forum RSS Forum

Ultimele articole Ultimele articole

Top membri

Pirahna Pirahna
la birou
carco carco
Bucuresti
Birkoff Birkoff
Bucuresti
mihaitha mihaitha
Sibiu
Mascka Mascka
Braila
gabysolomon gabysolomon
Bacau
whooper whooper
Toronto ON
raul_ raul_
dechim dechim
Drobeta Turnu Severin
Amenthes Amenthes

Newsletter


Email:
 inscriere
 renuntare
 
 Arhiva newsletter

Parteneriat

Copyright © 2001-2009 PHP Romania Add PHPRomania to Google Add PHPRomania to Del.icio.us Add PHPRomania to Stumbleupon Add PHPRomania to Yahoo! Add PHPRomania to Digg Add PHPRomania to Blink Bankruptcy | Modded Xbox | Mortgages | Bankruptcy Certification | Payday Loans
Ads: Partener Way2Web Nework: gazduire web | inregistrare domenii | web design | imobiliare | web hosting
Powered by Simplis