PHP实现网页内容html标签补全和过滤的方法小结【2种方法】

2025-05-27 0 90

本文实例讲述了PHP实现网页内容html标签补全过滤的方法。分享给大家供大家参考,具体如下:

如果你的网页内容的html标签显示不全,有些表格标签不完整而导致页面混乱,或者把你的内容之外的局部html页面给包含进去了,我们可以写个函数方法来补全html标签以及过滤掉无用的html标签.

php使HTML标签自动补全,闭合,过滤函数方法一:

代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19
function closetags($html) {

preg_match_all('#<(?!meta|img|br|hr|input\\b)\\b([a-z]+)(?: .*)?(?<![/|/ ])>#iU', $html, $result);

$openedtags = $result[1];

preg_match_all('#</([a-z]+)>#iU', $html, $result);

$closedtags = $result[1];

$len_opened = count($openedtags);

if (count($closedtags) == $len_opened) {

return $html;

}

$openedtags = array_reverse($openedtags);

for ($i=0; $i < $len_opened; $i++) {

if (!in_array($openedtags[$i], $closedtags)) {

$html .= '</'.$openedtags[$i].'>';

}else {

unset($closedtags[array_search($openedtags[$i], $closedtags)]);

}

}

return $html;

}

closetags()解析:

array_reverse() : 此函数将原数组中的元素顺序翻转,创建新的数组并返回。如果第二个参数指定为 true,则元素的键名保持不变,否则键名将丢失。

array_search() : array_search(value,array,strict),此函数与in_array()一样在数组中查找一个键值。如果找到了该值,匹配元素的键名会被返回。如果没找到,则返回 false。 如果第三个参数strict被指定为 true,则只有在数据类型和值都一致时才返回相应元素的键名。

php使HTML标签自动补全,闭合,过滤函数方法二:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36
function checkhtml($html) {

$html = stripslashes($html);

preg_match_all("/\\<([^\\<]+)\\>/is", $html, $ms);

$searchs[] = '<';

$replaces[] = '<';

$searchs[] = '>';

$replaces[] = '>';

if($ms[1]) {

$allowtags = 'img|font|div|table|tbody|tr|td|th|br|p|b|strong|i|u|em|span|ol|ul|li';//允许的标签

$ms[1] = array_unique($ms[1]);

foreach ($ms[1] as $value) {

$searchs[] = "<".$value.">";

$value = shtmlspecialchars($value);

$value = str_replace(array('\\\\','/*'), array('.','/.'), $value);

$value = preg_replace(array("/(javascript|script|eval|behaviour|expression)/i", "/(\\s+|"|')on/i"), array('.', ' .'), $value);

if(!preg_match("/^[\\/|\\s]?($allowtags)(\\s+|$)/is", $value)) {

$value = '';

}

$replaces[] = empty($value)?'':"<".str_replace('"', '"', $value).">";

}

}

$html = str_replace($searchs, $replaces, $html);

return $html;

}

//取消HTML代码

function shtmlspecialchars($string) {

if(is_array($string)) {

foreach($string as $key => $val) {

$string[$key] = shtmlspecialchars($val);

}

} else {

$string = preg_replace('/&((#(\\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\\\1',

str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string));

}

return $string;

}

checkhtml($html)解析:

stripslashes():函数删除由addslashes()函数添加的反斜杠。该函数用于清理从数据库或HTML表单中取回的数据。

希望本文所述对大家PHP程序设计有所帮助。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 PHP实现网页内容html标签补全和过滤的方法小结【2种方法】 https://www.kuaiidc.com/72496.html

相关文章

发表评论
暂无评论