博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网页内容的html标签补全和过滤的两种方法
阅读量:6294 次
发布时间:2019-06-22

本文共 2322 字,大约阅读时间需要 7 分钟。

网页内容的html标签补全和过滤的两种方法:

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

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

代码:

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标签自己主动补全,闭合,过滤函数方法二: 

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表单中取回的数据。

谢谢关注博客!

转载地址:http://kxpta.baihongyu.com/

你可能感兴趣的文章
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>
程序员修炼之道读后感2
查看>>
DWR实现服务器向客户端推送消息
查看>>
js中forEach的用法
查看>>
Docker之功能汇总
查看>>
!!a标签和button按钮只允许点击一次,防止重复提交
查看>>
(轉貼) Eclipse + CDT + MinGW 安裝方法 (C/C++) (gcc) (g++) (OS) (Windows)
查看>>
还原数据库
查看>>
作业调度框架 Quartz.NET 2.0 beta 发布
查看>>
mysql性能的检查和调优方法
查看>>
项目管理中的导向性
查看>>
Android WebView 学习
查看>>
(转)从给定的文本中,查找其中最长的重复子字符串的问题
查看>>