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 相关文章推荐
如何使用脚本模仿登陆过程
Nov 22 PHP
PHP5 安装方法
Jan 15 PHP
珊瑚虫IP库浅析
Feb 15 PHP
PHP XML数据解析代码
May 26 PHP
PHP使用DES进行加密与解密的方法详解
Jun 06 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
跟我学Laravel之快速入门
Oct 15 PHP
PHP多线程编程之管道通信实例分析
Mar 07 PHP
Zend Framework分页类用法详解
Mar 22 PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
详解将数据从Laravel传送到vue的四种方式
Oct 16 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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
php设计模式 Prototype (原型模式)代码
2011/06/26 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
基于Jquery的简单&amp;简陋Tabs插件代码
2010/02/09 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
JS中对Cookie的操作详解
2016/08/05 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
python遍历小写英文字母的方法
2019/01/02 Python
python binascii 进制转换实例
2019/06/12 Python
微信公众号token验证失败解决方案
2019/07/22 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
构建高效的python requests长连接池详解
2020/05/02 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
HTML5 Blob 实现文件下载功能的示例代码
2019/11/29 HTML / CSS
AmazeUI 等分网格的实现示例
2020/08/25 HTML / CSS
万宝龙英国官网:Montblanc手表、书写工具、皮革和珠宝
2018/10/16 全球购物
审计工作个人的自我评价
2013/12/25 职场文书
上课玩手机检讨书
2014/02/08 职场文书
环保口号大全
2014/06/12 职场文书
投诉信格式范文
2015/07/02 职场文书