PHP 教程

PHP 教程 PHP 简介 PHP 下载安装 PHP 语法 PHP 注释 PHP 变量 PHP Echo / Print PHP 数据类型 PHP 字符串 PHP 数值 PHP Math PHP 常量 PHP 运算符 PHP If...Else...Elseif PHP Switch PHP 循环 PHP 函数 PHP 数组 PHP 全局变量 PHP 正则表达式

PHP 表单

PHP 表单处理 PHP 表单验证 PHP 表单验证必填字段 PHP 表单验证URL/E-mail PHP 表单验证实例

PHP 高级教程

PHP 日期和时间 PHP Include PHP 文件处理 PHP 文件打开/读取 PHP 文件创建/写入 PHP 文件上传 PHP Cookies PHP Sessions PHP Filters PHP Filters Advanced PHP 回调函数 PHP JSON PHP 异常处理

PHP 面向对象

PHP 什么是 OOP PHP 类和对象 PHP 构造函数 PHP 析构函数 PHP 访问修饰符 PHP 继承 PHP 类常量 PHP 抽象类 PHP 接口 PHP 特征 PHP 静态方法 PHP 静态属性 PHP 命名空间 PHP 可迭代对象

MySQL 数据库

MySQL Database MySQL Connect MySQL Create DB MySQL Create Table MySQL Insert Data MySQL Get Last ID MySQL Insert Multiple MySQL Prepared MySQL Select Data MySQL Where MySQL Order By MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP XML

PHP XML Parsers PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Intro AJAX PHP AJAX Database AJAX XML AJAX Live Search AJAX Poll

PHP 实例

PHP 实例 PHP 编译器 PHP 测验 PHP 练习

PHP 参考手册

PHP 概述 PHP Array PHP Calendar PHP Date PHP Directory PHP Error PHP Exception PHP Filesystem PHP Filter PHP FTP PHP JSON PHP Keywords PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP Network PHP Output Control PHP RegEx PHP SimpleXML PHP Stream PHP String PHP Variable Handling PHP XML Parser PHP Zip PHP Timezones

PHP preg_replace_callback_array() 函数

❮ PHP 正则表达式参考

实例

显示句子中每个单词有多少个字母或数字:

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