php preg_replace替换实例讲解


Posted in PHP onNovember 04, 2013
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

是执行一个正则表达式的搜索和替换的用函数,平时我们用它时多是一次替换结束,今天又看php手册发现了一个较为难理解(自认为)的例子分享给大家。
<?php
 $subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4');
 $pattern = array('/\d/', '/[a-z]/', '/[1a]/');
 $replace = array('A:$0', 'B:$0', 'C:$0'); echo "preg_replace returns\n<pre/>";
 print_r(preg_replace($pattern, $replace, $subject));
 ?>
 

结果如下:

php preg_replace替换实例讲解
咋一看,我就看晕了
一般 若匹配模式和替换内容这两项都是数组的话它们应该相对应,如果replacement中的元素比pattern中的少, 多出来的pattern使用空字符串进行替换.
$pattern就像个扫描器,扫到匹配的就用于之对应的$replace替换
对于上例替换过程如下:
/\d/扫描$subject里的1,匹配了,匹配内容为$0(也就是1)就把1替换为A:1
然后用/[a-z]/扫描A:1不匹配,就不替换,继续用[1a]扫描A:1,匹配内容为1(也就是$0),就把A:1中1换为C:1
第一项最终被替换为A:C:1
简化过程:

1->A:1->A:C:1
a->B:a->B:C:a
2->A:2
b->B:b
A(没有符合匹配的就不替换了)
B(同上)
4->A:4
总结一点,拿$pattern里的每一个模式依次去匹配$subject里的每一个元素,匹配到了就用与$pattern对应的那个$replace对换,如上例,可能不止一次替换

PHP 相关文章推荐
多数据表共用一个页的新闻发布
Oct 09 PHP
检测png图片是否完整的php代码
Sep 06 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
php实现获取文章内容第一张图片的方法
Nov 04 PHP
php实现多城市切换特效
Aug 09 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
Jan 07 PHP
PHP模糊查询的实现方法(推荐)
Sep 06 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
php实现给二维数组中所有一维数组添加值的方法
Feb 04 PHP
php实现简单加入购物车功能
Mar 07 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
Jul 04 PHP
tp5框架内使用tp3.2分页的方法分析
May 05 PHP
php define的第二个参数使用方法
Nov 04 #PHP
Linux编译升级php的详细方法
Nov 04 #PHP
php获取操作系统语言代码
Nov 04 #PHP
Php header()函数语法及使用代码
Nov 04 #PHP
php配置php-fpm启动参数及配置详解
Nov 04 #PHP
mac下安装nginx和php
Nov 04 #PHP
php使用curl模拟登录后采集页面的例子
Nov 04 #PHP
You might like
与数据库连接
2006/10/09 PHP
PHP的开发框架的现状和展望
2007/03/16 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
jQuery 技巧小结
2010/04/02 Javascript
JS中的substring和substr函数的区别说明
2013/05/07 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
微信小程序实现分享朋友圈的图片功能示例
2019/01/18 Javascript
详解Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
2019/04/20 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
解决idea开发遇到javascript动态添加html元素时中文乱码的问题
2020/09/29 Javascript
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
Python实现的字典值比较功能示例
2018/01/08 Python
django 外键model的互相读取方法
2018/12/15 Python
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
一道Delphi上机题
2012/06/04 面试题
体育教育专业毕业生自荐信
2013/11/15 职场文书
医院院务公开实施方案
2014/05/03 职场文书
机械工程及自动化专业求职信
2014/09/03 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
django上传文件的三种方式
2021/04/29 Python
搭建Yolov5服务器
2022/04/30 Servers
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers