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 相关文章推荐
Windows下PHP的任意文件执行漏洞
Oct 09 PHP
生成静态页面的php函数,php爱好者站推荐
Mar 19 PHP
php HandlerSocket的使用
May 02 PHP
PHP调用Webservice实例代码
Jul 29 PHP
PHP性能优化工具篇Benchmark类调试执行时间
Dec 06 PHP
解析Ubuntu下crontab命令的用法
Jun 24 PHP
php使用GeoIP库实例
Jun 27 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
WordPress中is_singular()函数简介
Feb 05 PHP
详解php的socket通信
Aug 11 PHP
PHP基于自增数据如何生成不重复的随机数示例
May 19 PHP
php解决约瑟夫环算法实例分析
Sep 30 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学习笔记之三 数据库基本操作
2011/01/17 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
PHP学习笔记之session
2018/05/06 PHP
封装好的一个万能检测表单的方法
2015/01/21 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
js实现密码强度检验
2017/01/15 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
Python正则表达式匹配ip地址实例
2014/10/09 Python
Python中的浮点数原理与运算分析
2017/10/12 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
英国假发网站:Hothair
2018/02/23 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
监理员的岗位职责
2013/11/13 职场文书
出纳工作检讨书
2014/10/18 职场文书
迎新年主持词
2015/07/06 职场文书
遗嘱范文
2015/08/07 职场文书
外出听课学习心得体会
2016/01/15 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
python实现手机推送 代码也就10行左右
2022/04/12 Python