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 正则表达式参考