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 相关文章推荐
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
使用php判断网页是否gzip压缩
Jun 25 PHP
php教程之phpize使用方法
Feb 12 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
PHP手机号中间四位用星号*代替显示的实例
Jun 02 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
PHP htmlspecialchars_decode()函数用法讲解
Mar 01 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
Yii框架 session 数据库存储操作方法示例
Nov 18 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定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
php 伪静态之IIS篇
2014/06/02 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
php中define用法实例
2015/07/30 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
关于火狐(firefox)及ie下event获取的两种方法
2012/12/27 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
JavaScript中的Math.SQRT1_2属性使用简介
2015/06/14 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
2015/07/27 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
js实现简单模态框实例
2018/11/16 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
用python删除java文件头上版权信息的方法
2014/07/31 Python
Python os模块介绍
2014/11/30 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
linux面试题参考答案(1)
2016/01/22 面试题
酒店个人培训自我鉴定
2013/12/11 职场文书
在校生自我鉴定
2014/01/23 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
幼儿教师寄语集锦
2014/04/03 职场文书
2015年化验员工作总结
2015/04/10 职场文书
农业项目投资意向书
2015/05/09 职场文书
同学聚会开幕词
2019/04/02 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书