In PHP, mb_ereg_replace_callback() function is used to perform a regular expression search and replace it with a multibyte support using a callback. It will scan the strings and match them with a pattern, then it will replace the matched text with the output of the callback function. This function is like the mb_ereg_replace() function. It is supported in PHP 5.4 or higher version.
Syntax
string mb_ereg_replace_callback(str $pattern, callback $callback, str $string, str $options)
Parameters
The function accepts the following four parameters −
$pattern − This parameter is used for the regular expression pattern. It may use multibyte characters in a pattern.
$callback − This parameter will be called and passed an array of matched elements in the subject string and it should return the replacement string.
$string − This parameter is used to check the string.
$options − This parameter is used to check the search option.
Note − The callback function often needs for a mb_ereg_replace_callback() in just one place. You can also use an anonymous function to declare the callback within the call mb_ereg_replace_callback(). By using this, we can have all the information for the call in one place and do not mess the function namespace with a callback function's name which is not used anywhere else.
Return Values
mb_ereg_replace_callback() returns success for the resultant string or it returns False on error. It returns NULL if the string is not valid for the current encoding.
Example 1
<?php $result = "April Fools day is 04/01/2019\n"; $result.= "Next match is 12/24/2021\n"; // callback function function next_year($matches) { return $matches[1].($matches[2]+1); } echo mb_ereg_replace_callback( "(\d{2}/\d{2}/)(\d{4})", "next_year", $result); ?>
Output
April Fools day is 04/01/2020 Next match is 12/24/2022
Example 2
Using anonymous function
<?php // anonymous function is used $result = "April Fools day is 04/01/2019\n"; $result.= "Next match is 12/24/2021\n"; echo mb_ereg_replace_callback( "(\d{2}/\d{2}/)(\d{4})", function ($matches) { return $matches[1].($matches[2]+1); }, $result); ?>
Output
April fools day is 04/01/2020 Next match is 12/24/2022
Note − In Example 2, anonymous functions are used and a callback function is removed, but the output still remains the same.