本文实例讲述了PHP正则删除HTML代码中宽高样式的方法。分享给大家供大家参考,具体如下:
因工作需要,需要采集html,并把html内容保存到数据库中。为了避免影响使用,宽高样式需要删除。例如图片和div中的width, height等。
不过采集到的html中,样式的写法各有不同,例如大小写,中间有空格等。
因此使用php正则编写了下面这个方法,对这些奇葩的样式进行过滤。
代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<?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 ;
}
?>
|
演示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?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>' ;
?>
|
输出:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
原内容:
< 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 >
|
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
正则表达式在线测试工具:https://tool.zzvips.com/t/regex/
正则表达式在线生成工具:https://tool.zzvips.com/t/regcode/
希望本文所述对大家PHP程序设计有所帮助。