PHP preg_replace_callback_array() 函数
实例
显示句子中每个单词有多少个字母或数字:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "There are 365 days in a year.";
$patterns = [
'/\b[a-z]+\b/i' =>
'countLetters',
'/\b[0-9]+\b/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
亲自试一试 »
定义和用法
preg_replace_callback_array()
函数返回一个字符串或字符串数组,其中一组正则表达式的匹配被替换为回调函数的返回值。
注释: 对于每个字符串,该函数按照给定的顺序评估模式。 在字符串上评估第一个模式的结果用作第二个模式的输入字符串,依此类推。 这可能会导致意外行为。
语法
preg_replace_callback_array(patterns, input, limit, count)
参数值
参数 | 描述 |
---|---|
pattern | 必需。 将正则表达式模式与回调函数相关联的关联数组。 回调函数有一个参数,它是一个匹配数组。数组中的第一个元素包含整个表达式的匹配项,而其余元素包含表达式中每个组的匹配项。 |
input | 必需。正在执行替换的字符串或字符串数组 |
limit | 可选。默认为-1,表示无限制。 设置每个字符串中可以进行多少次替换的限制 |
count | 可选。函数执行后,该变量将包含一个数字,表示执行了多少次替换 |
技术细节
返回值: | 返回将替换应用于输入字符串或字符串而产生的字符串或字符串数组 |
---|---|
PHP 版本: | 7+ |
更多实例
实例
此示例说明了按顺序评估的模式可能产生的意外影响。 首先,countLetters 替换将"[4letter]"添加到"days",在执行替换后,countDigits 替换会在"4letter"中找到"4"并将"[1digit]"添加到其中:
<?php
function countLetters($matches) {
return $matches[0] . '[' .
strlen($matches[0]) . 'letter]';
}
function countDigits($matches) {
return $matches[0] . '[' . strlen($matches[0]) . 'digit]';
}
$input
= "365 days";
$patterns = [
'/[a-z]+/i' => 'countLetters',
'/[0-9]+/' => 'countDigits'
];
$result =
preg_replace_callback_array($patterns, $input);
echo $result;
?>
亲自试一试 »
❮ PHP 正则表达式参考