首页 > 编程 > PHP > 正文

php正则动态匹配 替代str_replace的数组替换

2020-03-22 17:57:11
字体:
来源:转载
供稿:网友
  • 之前做的客户端接口中,有把表情图片转换为文字标签的操作,如 -> [大笑],是用的str_replace的数组替换,完后一天,域名变了,悲催了,因为有新旧数据的同时存在,如果延续之前的做法,肯定还要再搞一个数组,主要因为表情一共有100多个,我实在不想那么干(同时对于之前那么干过的同事无比膜拜),可是问题还是需要解决,开始往正则替换方向考虑,但是通常用正则替换是解决的类似这样的问题:

     

    <? //将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg") $str = "sdfsdfsfsfdfs<img width='123px' src='/uploads/images/20100516000.jpg' height='43px' />sdfsdfsfsdf"; echo preg_replace('/(<img[^>]+?src=["']?[^>]+?)(images/)([^>]+?.(jpg|gif|bmp|bnp|png)["']?[^>]+?>)/i',"${1}uc/images/${3}",$str); ?>

    但是我要做的是类似把 <img width='123px' src='/uploads/images/face1.jpg' height='43px' />变成 [大笑] 的工作,仔细查看了一下表情的数据,发现了一个规律,表情图片链接地址的数字部分正好是标签数组的对应标签的下标,试想,如果能获取表情图片链接地址中的数字取出来作为标签数组下边,即可获取该表情图片的对应标签,我好像说的比较乱,实际情况是这样:

    表情图片地址:

    <img width='123px' src='/uploads/images/face0.jpg' height='43px' />

    <img width='123px' src='/uploads/images/face1.jpg' height='43px' />

    <img width='123px' src='/uploads/images/face2.jpg' height='43px' />

    <img width='123px' src='/uploads/images/face3.jpg' height='43px' />

    <img width='123px' src='/uploads/images/face4.jpg' height='43px' />

    ……


    表情标签数组:

    $biaoqing = array('[发呆]','[大笑]','[坏笑]','[撇嘴]','[可爱]'……)

    所以只要能够获取0,1,2,3,4;就能用$biaoqing[0],$biaoqing[1],$biaoqing[2],$biaoqing[3],$biaoqing[4]获取到标签

    尝试一下:

    preg_replace("/<img[^>]+src="http://([^">]+)/face([d]+).png"([^>]+)/>/",$biaoqing["/2"],$content);

    结果不起作用,心里哇凉哇凉的,但是总觉得这是一条可行之路,于是开始各种疯狂查,查手册,查案例,各种查,终于让我发现了伟大的修正符e,解决问题。

    preg_replace("/<img[^>]+src="http://([^">]+)/face([d]+).png"([^>]+)/>/e",'$biaoqing["/2"]',$content);

    成功了,庆祝一下。

     

    PHP编程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表