php正则动态匹配 - 替代str_replace的数组替换
2013-10-23 18:29
519 查看
之前做的客户端接口中,有把表情图片转换为文字标签的操作,如
-> [大笑],是用的str_replace的数组替换,完后一天,域名变了,悲催了,因为有新旧数据的同时存在,如果延续之前的做法,肯定还要再搞一个数组,主要因为表情一共有100多个,我实在不想那么干(同时对于之前那么干过的同事无比膜拜),可是问题还是需要解决,开始往正则替换方向考虑,但是通常用正则替换是解决的类似这样的问题:
但是我要做的是类似把 <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('[发呆]','[大笑]','[坏笑]','[撇嘴]','[可爱]'[b]……)[/b]
所以只要能够获取0,1,2,3,4;就能用$biaoqing[0],[b]$biaoqing[1],$biaoqing[2],$biaoqing[3],$biaoqing[4][/b]获取到标签
尝试一下:
preg_replace("/<img[^>]+src\=\"http:\/\/([^\">]+)\/face([\d]+).png\"([^>]+)\/>/",$biaoqing["\\2"],$content);
结果不起作用,心里哇凉哇凉的,但是总觉得这是一条可行之路,于是开始各种疯狂查,查手册,查案例,各种查,终于让我发现了伟大的修正符e,解决问题。
preg_replace("/<img[^>]+src\=\"http:\/\/([^\">]+)\/face([\d]+).png\"([^>]+)\/>/e",'$biaoqing["\\2"]',$content);
成功了,庆祝一下。
另一个关于静态化页面页码变换的正则:
地址类似于: http://www.tester.com/list/pr0-w0-f0-m0-or0-p0.html
执行正则如下:
<a href="'.preg_replace("/(p)(\d+)/e",'"\\1"."".("\\2"+1)',$link).'"><<上一页</a>
本文出自 “找啊找” 博客,请务必保留此出处http://searching.blog.51cto.com/7065945/1314082
-> [大笑],是用的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('[发呆]','[大笑]','[坏笑]','[撇嘴]','[可爱]'[b]……)[/b]
所以只要能够获取0,1,2,3,4;就能用$biaoqing[0],[b]$biaoqing[1],$biaoqing[2],$biaoqing[3],$biaoqing[4][/b]获取到标签
尝试一下:
preg_replace("/<img[^>]+src\=\"http:\/\/([^\">]+)\/face([\d]+).png\"([^>]+)\/>/",$biaoqing["\\2"],$content);
结果不起作用,心里哇凉哇凉的,但是总觉得这是一条可行之路,于是开始各种疯狂查,查手册,查案例,各种查,终于让我发现了伟大的修正符e,解决问题。
preg_replace("/<img[^>]+src\=\"http:\/\/([^\">]+)\/face([\d]+).png\"([^>]+)\/>/e",'$biaoqing["\\2"]',$content);
成功了,庆祝一下。
另一个关于静态化页面页码变换的正则:
地址类似于: http://www.tester.com/list/pr0-w0-f0-m0-or0-p0.html
执行正则如下:
<a href="'.preg_replace("/(p)(\d+)/e",'"\\1"."".("\\2"+1)',$link).'"><<上一页</a>
本文出自 “找啊找” 博客,请务必保留此出处http://searching.blog.51cto.com/7065945/1314082
相关文章推荐
- php str_replace字符替换与数组替换
- php使用str_replace替换多维数组的实现方法分析
- php使用str_replace替换多维数组的简单方法
- php使用str_replace替换多维数组的实现代码实例
- php函数之子字符串替换 str_replace
- PHP 字符串正则替换函数preg_replace
- php str_replace 替换指定次数方法
- php中正则替换函数ereg_replace用法实例
- PHP使用数组依次替换字符串中匹配项
- PHP基础--strtr和str_replace字符替换函数
- php str_replace替换指定次数的方法详解
- str_replace(),使用数组一次调用替换多个字符串
- PHP正则替换preg_replace
- PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
- PHP 字符串正则替换函数preg_replace使用说明
- php中正则替换函数ereg_replace用法实例
- PHP之preg_replace()与ereg_replace()正则匹配比较讲解
- PHP 字符串替换 substr_replace 与 str_replace 函数
- php中正则替换函数ereg_replace用法实例
- preg_replace的简单用法php正则替换