本文实例讲述了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程序设计有所帮助。