mb_ereg_replace_callback

(PHP 5 >= 5.4.1, PHP 7, PHP 8)

mb_ereg_replace_callback使用回调执行多字节支持的正则表达式搜索和替换

描述

mb_ereg_replace_callback(
    string $pattern,
    callable $callback,
    string $string,
    ?string $options = null
): string|false|null

扫描 string 以查找与 pattern 的匹配项,然后使用 callback 函数的输出替换匹配的文本。

此函数的行为与 mb_ereg_replace() 几乎完全相同,除了指定 callback 而不是 replacement 参数。

参数

pattern

正则表达式模式。

可以在 pattern 中使用多字节字符。

callback

将被调用并传递 string 字符串中匹配元素数组的回调函数。回调函数应返回替换字符串。

你通常只需要在一个地方使用 mb_ereg_replace_callback()callback 函数。在这种情况下,你可以在 mb_ereg_replace_callback() 的调用中使用 匿名函数 来声明回调函数。通过这种方式,你可以将所有调用信息放在一个地方,并且不会因为在其他地方未使用回调函数名称而使函数命名空间混乱。

string

要检查的 string

options

搜索选项。有关说明,请参见 mb_regex_set_options()

返回值

成功时返回生成的 string,错误时返回 false。如果 string 对当前编码无效,则返回 null

变更日志

版本 描述
8.0.0 options 现在可以为 null。
7.1.0 该函数检查 string 是否对当前编码有效。

示例

示例 #1 mb_ereg_replace_callback() 示例

<?php
// 此文本用于 2002 年
// 我们想将它更新到 2003 年
$text = "愚人节是 04/01/2002\n";
$text.= "去年圣诞节是 12/24/2001\n";
// 回调函数
function next_year($matches)
{
// 惯例:$matches[0] 是完整匹配
// $matches[1] 是第一个子模式的匹配
// 括在 '(...)' 中,依此类推
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

示例 #2 使用匿名函数的 mb_ereg_replace_callback()

<?php
// 此文本用于 2002 年
// 我们想将它更新到 2003 年
$text = "愚人节是 04/01/2002\n";
$text.= "去年圣诞节是 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() 指定的字符编码作为此函数的字符编码。

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top