博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个preg_replace()参数均为数组多次替换的实例理解
阅读量:5945 次
发布时间:2019-06-19

本文共 755 字,大约阅读时间需要 2 分钟。

      preg_replace ( $pattern , $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

  是— 执行一个正则表达式的搜索和替换的用函数,平时我们用它时多是一次替换结束,今天又看php手册发现了一个较为难理解(自认为)的例子分享给大家。

     

1 
";7 print_r(preg_replace($pattern, $replace, $subject)); 8 ?>

结果如下:

咋一看,我就看晕了

一般 若匹配模式和替换内容这两项都是数组的话它们应该相对应,如果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对换,如上例,可能不止一次替换

个人见解如有错误请网友指正!

 

 

转载于:https://www.cnblogs.com/HKUI/archive/2013/05/01/preg_replace.html

你可能感兴趣的文章
clear session on close of browser jsp
查看>>
关于吃掉物理的二次聚合无法实现的需要之旁门左道实现法
查看>>
mysql出现unblock with 'mysqladmin flush-hosts'
查看>>
oracle exp/imp命令详解
查看>>
开发安全的 API 所需要核对的清单
查看>>
Mycat源码中的单例模式
查看>>
WPF Dispatcher介绍
查看>>
fiddler展示serverIP方法
查看>>
已释放的栈内存
查看>>
Android网络之数据解析----SAX方式解析XML数据
查看>>
Java递归列出所有文件和文件夹
查看>>
[关于SQL]查询成绩都大于80分的学生
查看>>
Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
查看>>
LeetCode - Longest Common Prefix
查看>>
Android图片处理
查看>>
2015年第21本:万万没想到,用理工科思维理解世界
查看>>
大家谈谈公司里的项目经理角色及职责都是干什么的?
查看>>
剑指offer
查看>>
Velocity魔法堂系列二:VTL语法详解
查看>>
NopCommerce架构分析之八------多语言
查看>>