Php/docs/function.mb-ereg-replace-callback

From Get docs

mb_ereg_replace_callback

(PHP 5 >= 5.4.1, PHP 7)

mb_ereg_replace_callbackPerform a regular expression search and replace with multibyte support using a callback


Description

mb_ereg_replace_callback ( string $pattern , callable $callback , string $string [, string $option = "msr" ] ) : string

Scans string for matches to pattern, then replaces the matched text with the output of callback function.

The behavior of this function is almost identical to mb_ereg_replace(), except for the fact that instead of replacement parameter, one should specify a callback.


Parameters

pattern

The regular expression pattern.

Multibyte characters may be used in pattern.

callback

A callback that will be called and passed an array of matched elements in the subject string. The callback should return the replacement string.

You'll often need the callback function for a mb_ereg_replace_callback() in just one place. In this case you can use an anonymous function to declare the callback within the call to mb_ereg_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 function's name not used anywhere else.

string

The string being checked.

option

The search option. See mb_regex_set_options() for explanation.


Return Values

The resultant string on success, or FALSE on error.


Notes

Note:

The internal encoding or the character encoding specified by mb_regex_encoding() will be used as the character encoding for this function.

Examples

Example #1 mb_ereg_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 functionfunction 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 mb_ereg_replace_callback(            "(\d{2}/\d{2}/)(\d{4})",            "next_year",            $text);?>

The above example will output:


April fools day is 04/01/2003
Last christmas was 12/24/2002

Example #2 mb_ereg_replace_callback() using anonymous function supported in PHP 5.3.0 or later

<?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";echo mb_ereg_replace_callback(            "(\d{2}/\d{2}/)(\d{4})",            function ($matches) {               return $matches[1].($matches[2]+1);            },            $text);?>

See Also