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页面缓存ob系列函数介绍
Oct 18 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
Jul 15 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
php实现倒计时效果
Dec 19 PHP
php实现word转html的方法
Jan 22 PHP
php版微信自动登录并获取昵称的方法
Sep 23 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
PHP实现简易计算器功能
Aug 28 PHP
PHP实现cookie跨域session共享的方法分析
Aug 23 PHP
PHP实现简单登录界面
Oct 23 PHP
如何用PHP实现多线程编程
May 26 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
Yii获取当前url和域名的方法
2015/06/08 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
使用node.js搭建服务器
2017/05/20 Javascript
Angular2.js实现表单验证详解
2017/06/23 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
[45:06]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第二场 11.28
2020/12/02 DOTA
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
python3中str(字符串)的使用教程
2017/03/23 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python逆序打印各位数字的方法
2018/06/25 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
Python实现直播推流效果
2019/11/26 Python
Python线程threading模块用法详解
2020/02/26 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
台湾家适得:Homeget
2019/02/11 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
大学生实习证明范本
2014/09/19 职场文书
公务员个人年终总结
2015/02/12 职场文书
2016春节家属慰问信
2015/03/25 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python