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 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
PHP面向对象分析设计的61条军规小结
Jul 17 PHP
解析PHP缓存函数的使用说明
May 10 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
Jul 08 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
php mysql like 实现多关键词搜索的方法
Oct 29 PHP
php抽象方法和抽象类实例分析
Dec 07 PHP
thinkPHP5框架设置404、403等http状态页面的方法
Jun 05 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 PHP
PHP设计模式之工厂模式(Factory Pattern)的讲解
Mar 21 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
服务器web工具 php环境下
2010/12/29 PHP
提高php编程效率技巧
2015/08/13 PHP
php实现压缩合并js的方法【附demo源码下载】
2016/09/22 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
JAVASCRIPT HashTable
2007/01/22 Javascript
DIV菜单层实现代码
2010/11/19 Javascript
Jquery中给animation加更多的运作效果实例
2013/09/05 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
vue实现div拖拽互换位置
2020/07/29 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
Python只用40行代码编写的计算器实例
2017/05/10 Python
关于反爬虫的一些简单总结
2017/12/13 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
简单谈谈python基本数据类型
2018/09/26 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
解决python replace函数替换无效问题
2020/01/18 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
大学生求职简历的自我评价
2013/10/21 职场文书
法律进企业活动方案
2014/03/04 职场文书
小学综合实践活动总结
2014/07/07 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
股权投资协议书
2016/03/23 职场文书
Python基础之常用库常用方法整理
2021/04/30 Python
python实现股票历史数据可视化分析案例
2021/06/10 Python
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang