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


Posted in PHP onApril 27, 2017

本文实例讲述了PHP实现网页内容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表单中取回的数据。

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

PHP 相关文章推荐
PHP iconv 函数转gb2312的bug解决方法
Oct 11 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
Apr 12 PHP
用PHP为SHOPEX增加日志功能代码
Jul 02 PHP
PHP自动选择 连接本地还是远程数据库
Dec 02 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
May 04 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
PHP6 中可能会出现的新特性预览
Apr 04 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
Jun 22 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
php实现在服务器端调整图片大小的方法
Jun 16 PHP
PHP中对数组的一些常用的增、删、插操作函数总结
Nov 27 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 #PHP
php上传excel表格并获取数据
Apr 27 #PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 #PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 #PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 #PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 #PHP
PHP基于接口技术实现简单的多态应用完整实例
Apr 26 #PHP
You might like
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
jQuery的事件预绑定
2016/12/05 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
python 画图 图例自由定义方式
2020/04/17 Python
python中可以声明变量类型吗
2020/06/18 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
Python读写压缩文件的方法
2020/07/30 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
中国电视购物:快乐购
2017/02/04 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
总经理助理岗位职责
2013/11/08 职场文书
学习党课思想汇报
2013/12/29 职场文书
幼儿园中班新学期寄语
2014/01/18 职场文书
信息技术教学反思
2014/02/12 职场文书
出纳员的岗位职责
2014/02/22 职场文书
亲子读书活动方案
2014/02/22 职场文书
制冷与空调专业毕业生推荐信
2014/07/07 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python