求个正则

2015-05-18 12:40:33 +08:00
 cevincheung

需求这样的。

有一个富文本编辑器,提交html,内部会有图片内容。要求把所有img标签的width都设置为100%,同时删除style里的height属性和img标签本身的height属性。而img标签的属性顺序都不一样。比如:

<img src="" width=""         />
<img width=""                  src="" />
<img width=""     style=""    src='' />
<img width='' src="">

这正则该咋写

<?php
return preg_replace_callback('/???/',function($match}{
},$html);
1770 次点击
所在节点    正则表达式
10 条回复
mhycy
2015-05-18 12:42:18 +08:00
先替换成无width状态, 然后再加回去~
cevincheung
2015-05-18 12:43:33 +08:00
@mhycy 我也这么想,but, 正则白痴,求正则- -#
p1n3
2015-05-18 12:53:31 +08:00
先提取src,然后再根据需要拼接回去
mhycy
2015-05-18 12:54:07 +08:00
preg_replace("/(<img[^>]+?)width=['\"]+['\"]*['\"]+/","\\1width='100%'",$data);
w88975
2015-05-18 12:58:08 +08:00
正则不知道咋写 但是思路是先提取出页面所有的img标签存入list

##1. list[i].replace(' ',''),取出空格 再进行查找width='' or width="",如果有 则剔除width属性
##2. 上面剔除后的 再进行查找style='' or style="" 如果有 则查找 height:(.*); 剔除这部分
w88975
2015-05-18 12:59:49 +08:00
思路2
先提取出页面所有的img标签存入list
提取src的value
剔除所有img标签, 自己new一个img标签替换掉原来的,不过这个得看你的style里面有没有自己的样式
如果样式统一就可以这样做
w88975
2015-05-18 13:00:36 +08:00
不一定非得用正则,能解决问题才是关键
oott123
2015-05-18 14:49:47 +08:00
php 可以考虑用 phpQuery
不一定非得用正则的
Septembers
2015-05-18 14:57:37 +08:00
- 正则适合分析结构固定的数据
- 主题内容而言在前端可以预处理清理下 到后端再清理清理
- @oott123 这种情况的确适合处理成DOM再处理
lithium4010
2015-05-19 02:06:43 +08:00
前端jquery处理一下很方便呀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/191883

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX