preg_replace的一些细节
.$pattern是数组,$replace也是数组,则中对应的 元素进行替换
php
preg_replace有五个参数,有三个是必须参数
Preg_replace(mixed $pattern, mixed $replacement, mixed $subject [,int $limit = -1 [,int $count ]]);
$pattern 可以是字符串,字符串数组,或者preg
$replace 是用于替换的字符串或字符串数组
$subject 目标字符串或者目标字符串数组
$limit 每个模式在每个$subject上最大的替换次数,默认是-1(无限次)
$count 返回在目标字符串所替换的次数
在repalce与pattern中有几点要注意的
1.$pattern是数组,$replace也是字符串,那么所有模式都使用这个字符串来匹配;

2.$pattern是数组,$replace也是数组,则中对应的 元素进行替换

3.如果数组$pattern大于$replace,则多出来的$pattern用空的字符串进行替换,

$replace少于$patterns,则匹配到的值全部用空字符串来替换
4.对于上面例子中出现的${1},${2},${3},这个叫做包含后向引用,里面的数字代表原子出现的位数,有两种写法,一种是\\n,一种是${n},推荐使用第二种写法.会把目标字符串匹配到的pattern中的原子,按照要求变化目标字符串的格式,或者匹配的原子原样输出(这里举两个例子)

把时间按照 下划线分割开来,${3}就是匹配的到$patterns中的第三个原子((\d{1,2})),${4}就是匹配的到$patterns中的第四个原子((\d{1,2}))以此类推,

例如大家熟悉的smarty模板引擎中编译后替换的方法
5.第四个参数的$limit的使用,第四个参数的意思是每个模式在每个subject上进行替换的最大次数

如果limit为n,它只用正则替换n次
6.第五个参数$count的使用,$count的意思是,subject目标字符串被替换的次数,拿第五点的例子来说
上面代码中的例子运行结果如下:

附加:
preg_replace与str_replace的关系是什么呢?
我们可以理解为str_replace是preg_repalce的一个子集.只是str_replace中的第一个参数写的是string,而preg_replace写的是一个正则表达式
preg_replace的一些细节的更多相关文章
- PHP代码优化的53个细节
PHP代码优化的53个细节,常见而重要的php优化策略. 用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一 ...
- PHP高手干货分享:不能不看的50个细节!【PHP培训教程】
兄弟连分享PHP高手干货:不能不看的50个细节 1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以 ...
- Vue.js 和 MVVM 小细节
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
- vue2.0实践的一些细节
最近用vue2.0做了个活动.做完了回头发现,好像并没有太多的技术难点,而自己好像又做了比较久...只能说效率有待提升啊...简单总结了一些比较细节的点. 1.对于一些已知肯定会有数据的模块,先用一个 ...
- 深入理解JS 执行细节
javascript从定义到执行,JS引擎在实现层做了很多初始化工作,因此在学习JS引擎工作机制之前,我们需要引入几个相关的概念:执行环境栈.全局对象.执行环境.变量对象.活动对象.作用域和作用域链等 ...
- javaScript中的小细节-script标签中的预解析
首先介绍预解析,虽然预解析字面意思很好理解,但是却是出坑出的最多的地方,也是bug经常会有的地方,利用好预解析的特性可以解决很多问题,并且提高代码的质量及数量,浏览器在解析代码前会把变量的声明和函数( ...
- 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节
1:MSSQL SQL语法篇: BULK INSERT [ database_name . [ schema_name ] . | schema_name . ] [ table_name | vie ...
- Android ScrollView监听滑动到顶部和底部的两种方式(你可能不知道的细节)
Android ScrollView监听滑动到顶部和底部,虽然网上很多资料都有说,但是不全,而且有些细节没说清楚 使用场景: 1. 做一些复杂动画的时候,需要动态判断当前的ScrollView是否滚动 ...
- [更新设计]跨平台物联网通讯框架ServerSuperIO 2.0 ,功能、BUG、细节说明,以及升级思考过程!
注:ServerSuperIO 2.0 还没有提交到开源社区,在内部测试!!! 1. ServerSuperIO(SSIO)说明 SSIO是基于早期工业现场300波特率通讯传输应用场景发展.演化而来. ...
随机推荐
- Object.defineProperty(obj,prop,descriptor)使用
初步实现了数据自动映射到html中,动态修改对象数据也很自动更新到html.提供addProps方法-添加新增属性并初始化自动监听代码如下: 1.abserve.js:包含数据监听实现.类似jquer ...
- hive 优化方法
https://blog.csdn.net/jiangsanfeng1111/article/details/52847044 -- 高级优化 使用各种函数hive>show functions ...
- String Match
Finding length of longest common substring /*Finding length of longest common substring using DP * * ...
- 初入TensorFlow————配置TensorFlow
能看到这说明你对python已经有一定的了解了,因此很多基础直接跳过. 一.TensorFlow环境配置: TensorFlow的环境配置在网上很多的教程都是用anaconda的方式,但是很容易出现冲 ...
- WinDbg分析Dump常用方法和命令
记录下自己使用WinDbg分析Dump时常用的一些方法和命令 !analyze -v //找出出错的堆 .exrc //找到程序崩溃的位置 !heap //打印出错函数的局部位置 !for_each_ ...
- Cache高速缓冲存储器
Cache的命中率:命中Cache的次数比总访问次数 平均访问时间:t(Cache)X命中次数+t(未命中)X未命中次数 Cache与主存的映射方式: 直接映射 全相联映射 组相联映射 图片来源:ht ...
- 基于fpga的vga学习(1)
这次学习我主要掌握了vga的基本运行原理. vga基本概念: VGA时序主要包括两条信号线(HS,VS)的输出——行扫描和场扫描.VGA采用逐行扫描,每个像素对应的点扫描.行与行之间存在消隐以及显示时 ...
- linux之Ubuntu学习
开始学习Linux系统是在通过虚拟机VMware上安装Ubuntu操作系统来学习的. 一.Ubuntu安装及使用 第一步:安装虚拟机VMware 第二步:虚拟机安装好之后,创建一个新的虚拟机,安装Ub ...
- macOS终端开启TAB键自动补全功能(不区分大小写)
1.在当前用户根目录(~)下,修改~/.inputrc这个文件(如果文件不存在,则新建该文件),文件内容如下: set show-all-if-ambiguous on set completion- ...
- Asp.net Identity框架
Identity提供基于用户和角色的membership管理框架,基本上可以满足业务项目登录操作的所有功能需求. 如果要使用这套框架需要新建User和Role类型分别继承自IUser<TKey& ...