mb_ereg_replace_callback
mb_ereg_replace_callback
(PHP 5 >= 5.4.1, PHP 7)
mb_ereg_replace_callback - 执行常规表达式并使用回调替换多字节支持
描述
string mb_ereg_replace_callback ( string $pattern , callable $callback , string $string [, string $option = "msr" ] )
扫描string
匹配项pattern
,然后用callback
函数的输出替换匹配的文本。
这个函数的行为几乎与mb_ereg_replace()相同,除了这个事实,而不是replacement
参数,应该指定一个callback
。
参数
pattern
正则表达式模式。
可能会使用多字节字符pattern
。
callback
一个将被调用并在subject
字符串中传入匹配元素数组的回调函数。回调应该返回替换字符串。
你经常只需要一个地方callback
的mb_ereg_replace_callback()
函数。在这种情况下,您可以使用匿名函数在调用mb_ereg_replace_callback()
内声明回调。通过这样做,您可以在一个地方获得所有调用的信息,并且不会在其他地方没有使用回调函数名称的情况下混淆函数名称空间。
string
正在检查的字符串。
option
匹配条件可以通过option
参数设置。如果我
为此参数指定,则该案例将被忽略。如果指定了x,
则空白将被忽略。如果指定了m
,匹配将在多行模式下执行,换行符将包含在'。'中。如果指定了p
,匹配将在POSIX模式下执行,换行符将被视为正常字符。请注意,e
不能用于mb_ereg_replace_callback()
。
返回值
成功的字符串或错误时返回FALSE
。
注意
注意
:由mb_regex_encoding()指定的内部编码或字符编码将用作此函数的字符编码。
例子
示例#1 mb_ereg_replace_callback()示例
<?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
?>
上面的例子将输出:
April fools day is 04/01/2003
Last christmas was 12/24/2002
Example#2 mb_ereg_replace_callback()使用PHP 5.3.0或更高版本支持的匿名函数
<?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() - 设置/获取多字节正则表达式的字符编码
- mb_ereg_replace() - 用多字节支持替换正则表达式
- 匿名功能
- 有关回调类型的信息
← mb_ereg_match
mb_ereg_replace →