cevincheung

求个正则

  •  
  •   cevincheung · May 18, 2015 · 2318 views
    This topic created in 4016 days ago, the information mentioned may be changed or developed.

    需求这样的。

    有一个富文本编辑器,提交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);
    
    10 replies    2015-05-19 02:06:43 +08:00
    mhycy
        1
    mhycy  
       May 18, 2015
    先替换成无width状态, 然后再加回去~
    cevincheung
        2
    cevincheung  
    OP
       May 18, 2015
    @mhycy 我也这么想,but, 正则白痴,求正则- -#
    p1n3
        3
    p1n3  
       May 18, 2015 via iPhone
    先提取src,然后再根据需要拼接回去
    mhycy
        4
    mhycy  
       May 18, 2015
    preg_replace("/(<img[^>]+?)width=['\"]+['\"]*['\"]+/","\\1width='100%'",$data);
    w88975
        5
    w88975  
       May 18, 2015
    正则不知道咋写 但是思路是先提取出页面所有的img标签存入list

    ##1. list[i].replace(' ',''),取出空格 再进行查找width='' or width="",如果有 则剔除width属性
    ##2. 上面剔除后的 再进行查找style='' or style="" 如果有 则查找 height:(.*); 剔除这部分
    w88975
        6
    w88975  
       May 18, 2015
    思路2
    先提取出页面所有的img标签存入list
    提取src的value
    剔除所有img标签, 自己new一个img标签替换掉原来的,不过这个得看你的style里面有没有自己的样式
    如果样式统一就可以这样做
    w88975
        7
    w88975  
       May 18, 2015
    不一定非得用正则,能解决问题才是关键
    oott123
        8
    oott123  
       May 18, 2015
    php 可以考虑用 phpQuery
    不一定非得用正则的
    Septembers
        9
    Septembers  
       May 18, 2015
    - 正则适合分析结构固定的数据
    - 主题内容而言在前端可以预处理清理下 到后端再清理清理
    - @oott123 这种情况的确适合处理成DOM再处理
    lithium4010
        10
    lithium4010  
       May 19, 2015 via Android
    前端jquery处理一下很方便呀
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1461 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 17:00 · PVG 01:00 · LAX 10:00 · JFK 13:00
    ♥ Do have faith in what you're doing.