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 相关文章推荐
弄了个检测传输的参数是否为数字的Function
Dec 06 PHP
PHP 单引号与双引号的区别
Nov 24 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
php实现压缩多个CSS与JS文件的方法
Nov 11 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
PHP判断字符串长度的两种方法很实用
Sep 22 PHP
ThinkPHP实现更新数据实例详解(demo)
Jun 29 PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 PHP
PHP7匿名类的用法示例
Apr 05 PHP
laravel实现一个上传图片的接口,并建立软链接,访问图片的方法
Oct 12 PHP
php获取小程序码的实现代码(B类接口)
Jun 13 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就可用
2010/10/12 PHP
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
jquery中radio checked问题
2015/03/16 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
Python struct模块解析
2014/06/12 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Python3 assert断言实现原理解析
2020/03/02 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
反腐倡廉标语
2014/06/24 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
组织委员竞选稿
2015/11/21 职场文书
学生会自荐信
2019/05/16 职场文书
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android
SQLServer常见数学函数梳理总结
2022/08/05 MySQL