php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)


Posted in PHP onAugust 13, 2013

因有一项目新闻发布系统,数据库内容字段中存储的是原图的路径(当然还有其他文字内容啦,内容里插图时,存的是图片路径),但前台想使用缩略图,琢磨1小时余,得到以下结果,可解决问题(取img标签会了,取别的标签任意属性自然也会了):

<?php 
/*正则取图片img标记中的任意属性*/ $word = '<p height="22" align="cenetr">111 22</p> <img src="/upload/images/aaa.jpg" width="100"><div style="float:left;">中国人</div>'; 
//取整个图片代码 
preg_match('/</s*img/s+[^>]*?src/s*=/s*(/'|/")(.*?)//1[^>]*?//?/s*>/i',$word,$matches); 
echo $matches[0];//结果:<img src="/upload/images/aaa.jpg" width="100"> 
$word = '<p height="22" align="cenetr">111 22</p> <img height="60" src="/upload/images/aaa.jpg" width=100 style=><div style="float:left;">中国人</div>'; 
//取width 
preg_match('/<img.+(width=/"?/d*/"?).+>/i',$word,$matches); 
echo $matches[1]; 
//取height 
preg_match('/<img.+(height=/"?/d*/"?).+>/i',$word,$matches); 
echo $matches[1]; 
//取src 
preg_match('/<img.+src=/"?(.+/.(jpg|gif|bmp|bnp|png))/"?.+>/i',$word,$matches); 
echo $matches[1]; 
/*正则替换去掉或改变图片img标记中的任意属性***************************************************************/ 
$str = '<p height="22" align="cenetr">111 22</p> <img height="60" src="/upload/images/aaa.jpg" width=100 style=><div style="float:left;">中国人</div> 
<p height="22" align="cenetr">31313 224344</p> <img src="/upload/images/bbb.jpg" height="60" width=100 style=><div style="float:left;">1212121</div>'; 
//改变src属性(此处将原来的src="/upload/images/bbb.jpg"改变为src="/upload/_thumbs/Images/bbb.jpg") 
print preg_replace('/(<img.+src=/"?.+)(images//)(.+/.(jpg|gif|bmp|bnp|png)/"?.+>)/i',"/${1}_thumbs/Images//${3}",$str); 
/*改变src属性, 
此处将原来的src="/upload/images/bbb.jpg"改变为src="/upload/_thumbs/Images/bbb.jpg",并舍弃宽和高 
(比如你想在前台显示缩略图,但数据库中存储的是原图的路径。为什么要舍弃宽高??你缩略图啊!还是原图的宽高,会怎样???) 
*/ 
print preg_replace('/(<img).+(src=/"?.+)images//(.+/.(jpg|gif|bmp|bnp|png)/"?).+>/i',"/${1} /${2}_thumbs/Images//${3}>",$str); 
?>
PHP 相关文章推荐
php实现ping
Oct 09 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
初识通用数据库操作类――前端easyui-datagrid,form(php)
Jul 31 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
PHP实现路由映射到指定控制器
Aug 13 PHP
Laravel用户授权系统的使用方法示例
Sep 16 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
Feb 14 PHP
PHP+百度AI OCR文字识别实现了图片的文字识别功能
May 08 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 #PHP
完美解决PHP中的Cannot modify header information 问题
Aug 12 #PHP
php 下载保存文件保存到本地的两种实现方法
Aug 12 #PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 #PHP
php实现MD5加密16位(不要默认的32位)
Aug 12 #PHP
php中的Base62类(适用于数值转字符串)
Aug 12 #PHP
PHP实现把数字ID转字母ID
Aug 12 #PHP
You might like
以文本方式上传二进制文件的PHP程序
2006/10/09 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
PHP利用百度ai实现文本和图片审核
2019/05/08 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
javascript引用对象的方法代码
2007/08/13 Javascript
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
js导出table数据到excel即导出为EXCEL文档的方法
2013/10/10 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
微信小程序支付PHP代码
2018/08/23 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
Python标准库之循环器(itertools)介绍
2014/11/25 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
Python列表如何更新值
2020/05/27 Python
如何用python处理excel表格
2020/06/09 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
工地门卫岗位职责
2013/12/30 职场文书
女方婚礼新郎答谢词
2014/01/11 职场文书
2015年考研复习计划
2015/01/19 职场文书
家长会欢迎词
2015/01/23 职场文书
个人欠条范本
2015/07/03 职场文书
教师反邪教心得体会
2016/01/15 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
2019年大学生职业生涯规划书
2019/03/25 职场文书