正则:img的url,width,height 和 a标签的url以及替换
代码:
// 内容:$detail['content']
//img的url,width,height
$img = array();
$matches = array();
$regeImg = '/<img.+src=\"?(.+(jpg|gif|bmp|bnp|png))\"?.+width=\"?(\d*)\"?.+height=\"?(\d*)\"?.+>/i';
if(preg_match_all($regeImg, $detail['content'], $matches)){
//$matches[1] url ;$matches[3] width ;$matches[4] height
foreach($matches[1] as $k=>$v){
$img[$k]['ref'] = "<!--IMG#".$k."-->";
$img[$k]['src'] = $v;
$img[$k]['alt'] = '';
$img[$k]['width'] = $matches[3][$k];
$img[$k]['height'] = $matches[4][$k];
}
}
//a标签
$link = array();
$regA= '/<a.*href="(.*)".*>(.*)</isU';
$aList = array();
if(preg_match_all($regA, $detail['content'], $aList)){
//$aList[1] url ;$aList[2] content
foreach($aList[1] as $k=>$v){
$link[$k]['ref'] = "<!--link".$k."-->".$aList[2][$k];
$link[$k]['title'] = $aList[2][$k];
$link[$k]['url'] = $v;
}
}
//替换img标签
$str = "";
$regReplaceImg = '/<img.+src=\"?(.+(jpg|gif|bmp|bnp|png))\"?.+width=\"?(\d*)\"?.+height=\"?(\d*)\"?.+?(?=\/)?(>)?/i';
foreach($img as $k=>$v){
if($k == 0){
$content = $detail['content'];
$str = $this->replace($regReplaceImg,"<!--IMG#".$k."-->",$content);
}else{
$str = $this->replace($regReplaceImg,"<!--IMG#".$k."-->",$str);
}
}
//替换a标签
$body = '';
$regPeplaceA = '/<a.*href="(.*)".*>(.*)<\/a>/isU';
foreach($link as $k=>$v){
if($k == 0){
$body = $this->replace($regPeplaceA,$v['ref'],$str);
}else{
$body = $this->replace($regPeplaceA,$v['ref'],$body);
}
} //替换
public function replace($reg,$replace,$con){
$str = preg_replace($reg,$replace, $con,1);
return $str;
} 打印出来的json数据:

正则:img的url,width,height 和 a标签的url以及替换的更多相关文章
- client/scroll/offset width/height/top/left ---记第一篇博客
client/scroll/offset width/height/top/left (盒模型为contentBox,定位原点是元素左上角边框最外层的交点) clientWidth width+左p ...
- as3:sprite作为容器使用时,最好不要指定width,height
除 TextField 和 Video 对象以外,没有内容的显示对象(如一个空的 Sprite)的高度为 0,即使您尝试将 height 设置为其它值,也是这样. 如果您设置了 height 属性,则 ...
- offset[Parent/Width/Height/Top/Left] 、 client[Width/Height/Top/Left] 、 Element.getBoundingClientRect()
开篇提示:以下内容都经个人测试,参考API文档总结,但还是不能保证完全正确,若有错误,还请留言指出___________________________________________________ ...
- ffmpeg按比例缩放--"width / height not divisible by 2" 解决方法
最近在处理视频的时候,有这么一个需求 如果视频的分辨率宽度大于960的话,就把宽度设为960,而高度按其比例进行缩放 如果视频的分辨率高度大于540的话,就把高度设为540,而宽度按其比例进行缩放 之 ...
- 如何理解VB窗体中的scale类属性及width height属性之间的关系
如何理解VB窗体中的scale类属性及width height属性之间的关系 VB中的SCALEHIEGT,SCALEWIDTH,与窗体中的WIDTH,HEIGHT的区别及关系是许多VB初学者难以理解 ...
- css 行内元素 块元素 替换元素 非替换元素 以及这些元素的width height margin padding 特性
一.各种元素的width height margin padding 特性(具体css元素的分来参看二) 1.块级元素 width. height. margin的四个方向. padding的四个方向 ...
- struts2 标签 --<<s:url >
Struts2中的链接标签 <s:url>和<s:a> 普通链接 Web程序中最普通的应用是链接到其他页面,下面看Welcome.jsp. <%@ page conten ...
- Struts2中的链接标签 <s:url>和<s:a>---在action中获取jsp表单提交的参数(转)
转自:http://sgl124764903.iteye.com/blog/444183 1.普通链接 Web程序中最普通的应用是链接到其他页面,下面看Welcome.jsp. <%@ page ...
- URL传值问题,不同浏览器对URL的长度要求
通过URL传值的问题,所以对url字符串进行encodeURIComponent对url字符串内容进行编码,问题解决,但是有时候会出现 The request filtering module is ...
随机推荐
- 第 8 章 容器网络 - 056 - macvlan 网络结构分析
macvlan 网络结构分析 macvlan 不依赖 Linux bridge,brctl show 可以确认没有创建新的 bridge. 查看一下容器 bbox1 的网络设备: 除了 lo,容器只有 ...
- 移动采编app
大家好: 移动采编app用到了一些非该app定义的控件,比如照相机以及涉及到权限的弹窗等.这部分控件的元素id在不同品牌甚至同一品牌不同型号的手机上可能是不同的,因此安卓自动化中需要对这种情况做相应的 ...
- (6)进程---Event事件
# 阻塞事件 : e = Event()生成事件对象e e.wait()是给程序加阻塞 , 程序当中是否加阻塞完全取决于该对象中的is_set() [默认返回值是False] e.wait(2) 传参 ...
- WAMP环境配置
mysql 5.7.12 php 7.1 apache 24 windows 10 64bit 下载好代码后, 1.首先把更目录的sql.sql导入到数据库2.打开application\config ...
- ubuntu 14.04 postgresql 的总结
1)为了允许远程连接: a) http://askubuntu.com/questions/423165/remotely-access-postgresql-database To open the ...
- Ubuntu自带截图工具screenshoot
- p1474 Money Systems
就是背包,用O(n*m)的一维. #include <iostream> #include <cstdio> #include <cmath> #include & ...
- hdu-4507 吉哥系列故事——恨7不成妻 数位DP 状态转移分析/极限取模
http://acm.hdu.edu.cn/showproblem.php?pid=4507 求[L,R]中不满足任意条件的数的平方和mod 1e9+7. 条件: 1.整数中某一位是7:2.整数的每一 ...
- 电影《Green book》观后感_已补全:携带着种族歧视的“光环”,艰难地获得朋友的相互依赖,依然得享受生活的酸甜苦咸。
目录 1.电影基本情况介绍 2.故事整个发展经历 3.观影感受 4.网友评论 <Green book>--绿皮书 作者总共看这部影片三次,第一次英文版慢看,第二次中文版快看,第三次中文版总 ...
- Codefores 1151E Number of Components
大意:给定n元素序列$a$, $1\le a_i \le n$, 定义函数$f(l,r)$表示范围在$[l,r]$以内的数构成的连通块个数, 求$\sum\limits_{i=1}^{n}\sum\l ...