Php/func regex preg replace callback array

来自菜鸟教程
跳转至:导航、​搜索

PHP preg_replace_callback_array()函数

Reg PHP RegExp参考

显示在一个句子中每个单词中找到多少个字母或数字:

<?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;
?>

定义和用法

The preg_replace_callback_array() 函数返回一个字符串或一个字符串数组,在其中将一组正则表达式的匹配项替换为回调函数的返回值。

注意: 对于每个字符串,函数都会按照给出的顺序评估模式。评估字符串上第一个模式的结果用作第二个模式的输入字符串,依此类推。这可能会导致意外的行为。


句法

preg_replace_callback_array(patterns, input, limit, count)

参数值

参数 描述
pattern 需要。将正则表达式模式与回调函数相关联的关联数组。


回调函数有一个参数,它是一个匹配数组。数组中的第一个元素包含整个表达式的匹配项,其余元素与表达式中每个组的匹配项都匹配。

input 需要。正在执行替换的字符串或字符串数​​组
limit 可选的。默认值为-1,表示无限制。设置每个字符串可以进行多少次替换的限制
count 可选的。函数执行后,此变量将包含一个数字,指示已执行了多少次替换

技术细节

返回值: 返回一个字符串或字符串数​​组,该字符串或字符串数​​组是通过将位置替换应用于一个或多个输入字符串而产生的
PHP版本: 7+

更多例子

此示例说明了按顺序评估模式可能带来的意外影响。首先,countLetters替换将“ [4letter]”添加到“天”,执行替换后,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;
?>

Reg PHP RegExp参考