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 相关文章推荐
在同一窗体中使用PHP来处理多个提交任务
Oct 09 PHP
PHP 开发工具
Dec 06 PHP
PHP中include()与require()的区别说明
Mar 10 PHP
PHP连接Access数据库的方法小结
Jun 20 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
Aug 07 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
Yii2基于Ajax自动获取表单数据的方法
Aug 10 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
thinkphp5使html5实现动态跳转的例子
Oct 16 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
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
php限制文件下载速度的代码
2015/10/20 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
angularjs中判断ng-repeat是否迭代完的实例
2018/09/12 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
对于Python的Django框架部署的一些建议
2015/04/09 Python
用Django实现一个可运行的区块链应用
2018/03/08 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
用JAVA实现一种排序,JAVA类实现序列化的方法(二种)
2014/04/23 面试题
失业者真诚求职信范文
2013/12/25 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
意向协议书
2015/01/27 职场文书
六年级情感作文之500字
2019/10/23 职场文书
Python实现老照片修复之上色小技巧
2021/10/16 Python
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS
MySQL视图概念以及相关应用
2022/04/19 MySQL
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL