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水印
Mar 16 PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
Sep 13 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
一个基于phpQuery的php通用采集类分享
Apr 09 PHP
php的dl函数用法实例
Nov 06 PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 PHP
php单例模式示例分享
Feb 12 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
php无限级分类实现方法分析
Oct 19 PHP
PHP正则删除HTML代码中宽高样式的方法
Jun 12 PHP
Laravel框架实现多数据库连接操作详解
Jul 12 PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
May 29 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
在PHP中利用XML技术构造远程服务(上)
2006/10/09 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
PHP易混淆知识整理笔记
2015/09/24 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
Javascript学习笔记1 数据类型
2010/01/11 Javascript
生成二维码方法汇总
2014/12/26 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
JS实现复制功能
2017/03/01 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
Python实现的Excel文件读写类
2015/07/30 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
Python上下文管理器和with块详解
2017/09/09 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
python颜色随机生成器的实例代码
2020/01/10 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
复古服装:RetroStage
2019/05/10 全球购物
优秀员工自荐信范文
2013/10/05 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
关于CentOS 8 搭建MongoDB4.4分片集群的问题
2021/10/24 MongoDB
关于JavaScript轮播图的实现
2021/11/20 Javascript