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 相关文章推荐
教你IIS6的PHP最佳配置方法
Sep 05 PHP
一些使用频率比较高的php函数
Oct 03 PHP
php strtotime 函数UNIX时间戳
Jan 14 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
php curl_init函数用法
Jan 31 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 PHP
php判断对象是派生自哪个类的方法
Jun 20 PHP
实例讲解php数据访问
May 09 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
php实用代码片段整理
Nov 12 PHP
使用laravel指定日志文件记录任意日志
Oct 17 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
11个PHPer必须要了解的编程规范
2014/09/22 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
HTML中Select不用Disabled实现ReadOnly的效果
2008/04/07 Javascript
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
jquery禁用右键示例
2014/04/28 Javascript
使用jquery菜单插件HoverTree仿京东无限级菜单
2014/12/18 Javascript
jQuery右下角悬浮广告实例
2016/10/17 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
vue-loader教程介绍
2017/06/14 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
python解析json实例方法
2013/11/19 Python
PyCharm安装第三方库如Requests的图文教程
2018/05/18 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
python 实现IP子网计算
2021/02/18 Python
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
Linux机考试题
2015/07/17 面试题
货代行业个人求职简历的自我评价
2013/10/22 职场文书
自我鉴定书面格式
2014/01/13 职场文书
二年级语文教学反思
2014/02/02 职场文书
关于安全的演讲稿
2014/05/09 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
不同意离婚代理词
2015/05/23 职场文书
法律服务所工作总结
2015/08/10 职场文书
《三国志》赏析
2019/08/27 职场文书