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小型企业库存管理系统的设计与实现代码
May 16 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
Jun 02 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
Yii框架登录流程分析
Dec 03 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
必须收藏的23个php实用代码片段
Feb 02 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
Yii2创建表单(ActiveForm)方法详解
Jul 23 PHP
什么是PHP文件?如何打开PHP文件?
Jun 27 PHP
php设计模式之策略模式应用案例详解
Jun 17 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 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 cookie的操作实现代码(登录)
2010/12/29 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
2013/07/03 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
文件上传之SWFUpload插件(代码)
2015/07/30 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
jQuery 性能优化指南(3)
2009/05/21 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
jquery Banner轮播选项卡
2016/12/26 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
python中PIL安装简单教程
2016/04/21 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
分分钟入门python语言
2018/03/20 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
通过实例解析Python return运行原理
2020/03/04 Python
python有几个版本
2020/06/17 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
安全检查验收制度
2014/01/12 职场文书
2014年预算员工作总结
2014/12/05 职场文书
护士自荐信范文
2015/03/25 职场文书
2015年环保局工作总结
2015/05/22 职场文书
2015年学校团委工作总结
2015/05/26 职场文书
房贷工资证明范本
2015/06/12 职场文书
七夕情人节问候语
2015/11/11 职场文书
2016暑期社会实践心得体会范文
2016/01/14 职场文书