当前位置: 首页 > 后端技术 > PHP

PHP正则表达式核心技术详解第五节PHP正则表达式替换功能

时间:2023-03-29 23:16:41 PHP

作者:3#对于一个专注于web技术的80后来说,你不需要和聪明人斗,只需要和那些懒惰的人斗,你一定会超越大部分人!思否@吉客小俊官方第一篇原创企业博客:?极客君?B站地址:?哔哩哔哩?说到替换,这里我觉得首先要回忆一下字符串的相关替换函数!==str_replace()==查找字符串中的字符,然后替换为想要的字符==str_ireplace()==查找字符串中的字符,然后替换为想要的字符(不区分大小写)==Tips==str_replace()函数是一个全局替换练习:在字符串中找到对应数组的字符,设置为红色代码如下://在字符串中找到数组对应的字符,设置为红色$string='[北京朝阳区天安门http://www.baidu.com北京朝阳区天安门http://www.sina.com天安门北京朝阳区http://www.163.com天安门]';$data=['http://www.baidu.com','http://www.sina.com','http://www.163.com'];//处理前echonl2br($string);echo'


';foreach($dataas$k=>$v){//这里使用了不区分大小写的str_ireplace()方法来替换$string=str_ireplace($v,''.$v.'',$string);}//处理后echonl2br($string);==str_replace()方法中的参数有3种使用方式==第一种:str_replace(string,string,string,numberofreplacements);代码如下:$string="onlineprojectphphostingusergitincludesphpsource-codephpbrowser,phpin-lineeditingwikisandticketingfreeforpublicphp开源代码!";$search='php';$replace='php';echostr_replace($search,$replace,$string,$count);echo'
';echo'替换次数为:'.$count.'times!';第二种:str_replace(array,string,string,replacementtimes);粗略来说,代码如下:$string="onlineprojectAmericanphphostingJapaneseusergitincludesphpKoreansource-codephpbrowser,phpin-lineeditingFrenchwikisandticketingAustraliafreeforpublicphpopen-sourcecode!";//查找资料$search=array('美国','日本','韩国','法国','澳大利亚');//替换为$replace='***';//开始替换echostr_replace($search,$replace,$string,$count);echo'
';echo'替换次数为:'.$count.'次!';第三种:str_replace(array,array,string,numberofreplacements);代码如下:$string="onlineprojectAmericanphphostingJapaneseusergitincludesphpKoreans源代码php浏览器,php在线编辑法国维基和票务澳大利亚免费公开php开源代码!”;//查找数据$search=array('UnitedStates','Japan','Korea','法国”、“澳大利亚澳大利亚');//替换为$replace=['***','???','###','@@@','&&&',];//开始替换echostr_replace($search,$replace,$string,$count);回声'
';echo'替换次数为:'.$count.'次!以上就是对字符串中替换的回顾,不要走开,接下来我们就进入正则函数替换的正题了!==PHP正则替换函数====preg_replace()==;正则替换函数,返回值可以是字符串或数组,一般使用preg_replace(parameter..)参数列表:参数1:$pattern正则字符串或正则数组参数2:$replacement参数替换的字符串或字符串数??组3:$string要处理的字符串或字符串数??组参数4:每个模式在每个字符串上被替换的次数,默认为-1全部替换参数5:记录替换次数的参考变量代码示例如下:$string="onlineprojectphphostingmysqlusergitincludesphpsource-codephpbrowserphpin-lineeditingwikisandticketingfreeforpublicjavascriptopen-sourcecode!";//FindData$search='/PHP|数据库|javascript/';//替换为$replace='***';//开始替换echopreg_replace($search,$replace,$string);使用子模式替换第二个参数中可以使用的子模式代码示例如下:publicjavascriptopen-sourcecodefreeticketingfree!";//查找数据$search='/(php|mysql|javascript)/';//替换成这里,记住字符串中单引号和双引号对反向引用的作用!如前面提到的!!不懂的同学可以回去看看!!$replace="\\1";//开始替换echopreg_replace($search,$replace,$string);前两个参数使用数组,多个模式(规律性)可以同时替换为对应的多个值UBB代码,这里不介绍什么是UBB[u]php[/u]hostingmysqlusergit包括php源代码php浏览器、php在线[b]编辑[/b]维基和免费票务[fontsize=7]public[/font]javascript开源代码!一种更好的合作方式[align=center][colorcolor=red]GitHub[/color][/align]将团队[colorcolor=blue]聚集在一起[/color]来解决问题s,把思路往前推进,一路上互相学习。[imgwidth=100]http://localhost/test3/1.jpg[/img]";//替换前echo$string;echo'
';//查找数据$pattern=array('/\[u\](.+)\[\/u\]/','/\[b\](.+)\[\/b\]/','/\[align=(left|center|right)\](.+)\[\/align\]/','/\[font(\s+)?(size=\d)?\](.+)\[\/font\]/','/\[color(\s+)?color=([a-zA-Z]+)?\](.+?)\[\/color\]/','/\[img\s(width=\d{1,3})?\](.+)\[\/img\]/');//替换为$replace=数组('${1}','${1}','${2}

','${3}','${3}','');//开始替换$result=preg_replace($pattern,$replace,$string);echo$result;echo'
';注意:preg_replaceafterphp7()函数第一个参数不支持模式修正符号e,即不再支持/e修饰符,如果要使用该函数,请使用:preg_replace_callback()function==preg_replace_callback==(parameter..)函数on:执行正则表达式搜索并使用回调进行替换。匹配的字符和子组包含在回调函数的参数中。参数列表:参数1:常规字符串或数组参数2:处理替换的回调函数支持普通函数、匿名函数和类方法参数3:处理后的字符串参数4:每个模式在每个字符串上被替换的次数,默认是-1Replaceall参数5:记录替换次数的引用变量示例1:匿名函数替换代码示例如下$string='为一个issue或pullrequest分配最多十个队友,以确保工作有一个所有者。提到其他人或团队mysqlin问题将通知他们如果php有什么变化。javascript他们还可以通过选择在有人发帖时接收通知来留在php循环中';$pattern='/mysql|php|javascript/';echopreg_replace_callback($pattern,function($arr){//show($arr);echo$num++;return''.strtolower($arr[0]).'';},$string);例子2:类方法替换方法代码案例如下$string='分配php给十个队友给一个issue或拉取请求以确保工作有所有者。在问题中提及其他人或团队mysql将在php发生变化时通知他们。javascript他们还可以通过选择在有人发布时接收通知来留在php循环中';$pattern=array('/php/i','/javascript/','/mysql/');classReplace{staticpublicfunctiontxt($replace){show($replace);if($replace[0]=='php'){return''.$replace[0].'';}返回''.$replace[0].'';}}$result=preg_replace_callback($pattern,'Replace::txt',$string);回声$结果;如果我的博客对你有帮助,如果你喜欢我的博客请“点赞”、“评论”和“收藏”内容好吗?一键三连!您的支持是我前进的动力。