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 和 MySQL 基础教程(二)
Oct 09 PHP
PHP个人网站架设连环讲(三)
Oct 09 PHP
PHP网站基础优化方法小结
Sep 29 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 PHP
php中关于socket的系列函数总结
May 18 PHP
PHP准确取得服务器IP地址的方法
Jun 02 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
PHP简单实现文本计数器的方法
Apr 28 PHP
[原创]php求圆周率的简单实现方法
May 30 PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 PHP
tp5框架基于ajax实现异步删除图片的方法示例
Feb 10 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
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
2019/04/23 jQuery
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
Python决策树分类算法学习
2017/12/22 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
Django单元测试中Fixtures用法详解
2020/02/25 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
python 常见的排序算法实现汇总
2020/08/21 Python
CSS3实现网站商品展示效果图
2020/01/18 HTML / CSS
htnl5利用svg页面高斯模糊的方法
2018/07/20 HTML / CSS
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
如何进行有效的自我评价
2013/09/27 职场文书
会计毕业生自荐信
2013/11/21 职场文书
新学期班主任寄语
2014/01/18 职场文书
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
Python+Appium新手教程
2021/04/17 Python
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL
Vue深入理解插槽slot的使用
2022/08/05 Vue.js