轻松上手,快乐学习!

PHP 教程

PHP 教程PHP 简介PHP 下载安装PHP 语法PHP 注释PHP 变量PHP Echo / PrintPHP 数据类型PHP 字符串PHP 数值PHP MathPHP 常量PHP 运算符PHP If...ElsePHP SwitchPHP 循环While 循环Do While 循环For 循环Foreach 循环Break/ContinuePHP 函数PHP 数组索引数组关联数组多维数组数组排序PHP 全局变量$GLOBALS$_SERVER$_REQUEST$_POST$_GETPHP 正则表达式PHP 表单处理PHP 表单验证PHP 表单验证必填字段PHP 表单验证URL/E-mailPHP 表单验证实例PHP 日期和时间PHP IncludePHP 文件处理PHP 文件打开/读取PHP 文件创建/写入PHP 文件上传PHP CookiesPHP SessionsPHP FiltersPHP Filters AdvancedPHP 回调函数PHP JSONPHP 异常处理PHP 什么是 OOPPHP 类和对象PHP 构造函数PHP 析构函数PHP 访问修饰符PHP 继承PHP 类常量PHP 抽象类PHP 接口PHP 特征PHP 静态方法PHP 静态属性PHP 命名空间PHP 可迭代对象MySQL DatabaseMySQL ConnectMySQL Create DBMySQL Create TableMySQL Insert DataMySQL Get Last IDMySQL Insert MultipleMySQL PreparedMySQL Select DataMySQL WhereMySQL Order ByMySQL Delete DataMySQL Update DataMySQL Limit DataPHP XML ParsersPHP SimpleXML ParserPHP SimpleXML - GetPHP XML ExpatPHP XML DOMAJAX IntroAJAX PHPAJAX DatabaseAJAX XMLAJAX Live SearchAJAX PollPHP 实例PHP 编译器PHP 测验PHP 练习

PHP 参考手册

PHP 概述PHP ArrayPHP CalendarPHP DatePHP DirectoryPHP ErrorPHP ExceptionPHP FilesystemPHP FilterPHP FTPPHP JSONPHP KeywordsPHP LibxmlPHP MailPHP MathPHP MiscPHP MySQLiPHP NetworkPHP Output ControlPHP RegExPHP SimpleXMLPHP StreamPHP StringPHP Variable HandlingPHP XML ParserPHP ZipPHP Timezones


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;
?>
亲自试一试 »