Perform a regular expresssion seach and replace with multibyte support using a callback

mb_ereg_match
mb_ereg_replace
Multibyte String Functions
PHP Manual

# mb_ereg_replace_callback

(PHP 5 >= 5.4.1)

mb_ereg_replace_callback — Perform a regular expresssion seach and replace with multibyte support using a callback

### Description

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

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`

  Matching condition can be set by `option` parameter. If i is specified for this parameter, the case will be ignored. If x is specified, white space will be ignored. If m is specified, match will be executed in multiline mode and line break will be included in '.'. If p is specified, match will be executed in POSIX mode, line break will be considered as normal character. Note that e cannot be used for mb_ereg_replace_callback().

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

- mb_regex_encoding() - Set/Get character encoding for multibyte regex
- mb_ereg_replace() - Replace regular expression with multibyte support
- Anonymous functions
- information about the callback type

mb_ereg_match
mb_ereg_replace
Multibyte String Functions
PHP Manual