php使用正则去除宽高样式

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

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

因此使用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;
}
?>

演示:

$html = <<"text-align:center" width="500" height="300">
    
"Width : 100px ; Height: 100 px;"> "/images/test.jpg" width=400 height = 200>
"float:left; width: 100px; height : 200 px;">
"width : 100 px ;height: 100px"> "/images/test.jpg" width=400 height = 200>
HTML; echo ''</span>; <span class="hljs-built_in">echo</span> <span class="hljs-string">'原内容:'</span>.PHP_EOL; <span class="hljs-built_in">echo</span> <span class="hljs-variable">$html</span>.PHP_EOL.PHP_EOL; <span class="hljs-built_in">echo</span> <span class="hljs-string">'过滤后内容:'</span>.PHP_EOL; <span class="hljs-built_in">echo</span> clear_wh(<span class="hljs-variable">$html</span>); <span class="hljs-built_in">echo</span> <span class="hljs-string">''; ?>

输出:

原内容:
<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>

你可能感兴趣的:(php)