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

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

//将src="/uploads/p_w_picpaths/20100516000.jpg"替换为src="/uploads/uc/p_w_picpaths/20100516000.jpg")

$str = "sdfsdfsfsfdfs20100516000.jpgsdfsdfsfsdf";

echo preg_replace('/(]+?src=[\"\']?[^>]+?)(p_w_picpaths\/)([^>]+?\.(jpg|gif|bmp|bnp|png)[\"\']?[^>]+?>)/i',"\${1}uc/p_w_picpaths/\${3}",$str);

?>

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

表情图片地址:

face0.jpg

face1.jpg

face2.jpg

face3.jpg

face4.jpg

……

表情标签数组:

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

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

尝试一下:

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

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

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

成功了,庆祝一下。

另一个关于静态化页面页码变换的正则:

地址类似于:

http://www.tester.com/list/pr0-w0-f0-m0-or0-p0.html

执行正则如下:

<<上一页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值