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面向对象全攻略 (五) 封装性
Sep 30 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
神盾加密解密教程(一)PHP变量可用字符
May 28 PHP
php实现两个数组相加的方法
Feb 17 PHP
简单谈谈php中的unicode和utf8编码
Jun 10 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
Dec 19 PHP
php微信公众号js-sdk开发应用
Nov 28 PHP
thinkPHP5.0框架环境变量配置方法
Mar 17 PHP
php实现socket推送技术的示例
Dec 20 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
May 28 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
计算2000年01月01日起到指定日的天数
2006/10/09 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
php自动载入类用法实例分析
2016/06/24 PHP
PHP自定义多进制的方法
2016/11/03 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
javascript 得到变量类型的函数
2010/05/19 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
深入分析jQuery的ready函数是如何工作的(工作原理)
2015/12/17 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
pandas将DataFrame的列变成行索引的方法
2018/04/10 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
python logging设置level失败的解决方法
2020/02/19 Python
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
Tessabit美国:集世界奢侈品和设计师品牌的意大利精品买手店
2020/06/29 全球购物
超市员工管理制度
2015/08/06 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫