php使用正则去除宽高样式

因工作需要,需要采集html,并把html内容保存到数据库中。为了避免影响使用,宽高样式需要删除。例如图片和div中的width, height等。

不过采集到的html中,样式的写法各有不同,例如大小写,中间有空格等。

因此使用php正则编写了下面这个方法,对这些奇葩的样式进行过滤。

代码如下:

<?php
/**
 * 清除宽高样式
 * @param  String $content 内容
 * @return String
 */
function clear_wh($content){
    $config = array('width', 'height');

    foreach($config as $v){
        $content = preg_replace('/'.$v.'\s*=\s*\d+\s*/i', '', $content);
        $content = preg_replace('/'.$v.'\s*=\s*.+?["\']/i', '', $content);
        $content = preg_replace('/'.$v.'\s*:\s*\d+\s*px\s*;?/i', '', $content);
    }

    return $content;
}
?>

演示:

<?php
$html = <<<HTML
<div style="text-align:center" width="500" height="300">
    <div style="Width : 100px ; Height: 100 px;">
        <img src="/images/test.jpg" width=400 height = 200>
        <div style="float:left; width: 100px; height : 200 px;"></div>
    </div>
    <div style="width :   100 px ;height: 100px">
        <img src="/images/test.jpg" width=400 height = 200>
    </div>
</div>
HTML;

echo '<xmp>';
echo '原内容:'.PHP_EOL;
echo $html.PHP_EOL.PHP_EOL;
echo '过滤后内容:'.PHP_EOL;
echo clear_wh($html);
echo '</xmp>';
?>

输出:

原内容:
<div style="text-align:center" width="500" height="300">
    <div style="Width : 100px ; Height: 100 px;">
        <img src="/images/test.jpg" width=400 height = 200>
        <div style="float:left; width: 100px; height : 200 px;"></div>
    </div>
    <div style="width :   100 px ;height: 100px">
        <img src="/images/test.jpg" width=400 height = 200>
    </div>
</div>

过滤后内容:
<div style="text-align:center"  >
    <div style=" ">
        <img src="/images/test.jpg" >
        <div style="float:left;  "></div>
    </div>
    <div style="">
        <img src="/images/test.jpg" >
    </div>
</div>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值