Php/docs/function.mb-ereg-replace-callback
mb_ereg_replace_callback
(PHP 5 >= 5.4.1, PHP 7)
mb_ereg_replace_callback — Perform a regular expression search and replace with multibyte support using a callback
说明
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
.
参数
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.
返回值
The resultant string on success, or false
on error.
注释
Note:
mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。
范例
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);?>
以上例程会输出:
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);?>
参见
- mb_regex_encoding() - Set/Get character encoding for multibyte regex
- mb_ereg_replace() - Replace regular expression with multibyte support
- Anonymous functions