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 相关文章推荐
使用eAccelerator加密PHP程序
Oct 03 PHP
php 删除记录同时删除图片文件的实现代码
May 12 PHP
PHP封装分页函数实现文本分页和数字分页
Oct 23 PHP
PHP中常用的字符串格式化函数总结
Nov 19 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
Mar 03 PHP
PHP使用PHPexcel导入导出数据的方法
Nov 14 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
php实现数据库的增删改查
Feb 26 PHP
PHP实现的函数重载功能示例
Aug 03 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
Laravel推荐使用的十个辅助函数
May 10 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同时支持GIF、png、JPEG
2006/10/09 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
linux下实现定时执行php脚本
2015/02/13 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
JavaScript 继承详解(四)
2009/07/13 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
js jquery数组介绍
2012/07/15 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
Jquery的autocomplete插件用法及参数讲解
2019/03/12 jQuery
浅谈使用nodejs搭建web服务器的过程
2020/07/20 NodeJs
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
python列表去重的二种方法
2014/02/14 Python
Python读取mp3中ID3信息的方法
2015/03/05 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
基于sklearn实现Bagging算法(python)
2019/07/11 Python
使用Python实现分别输出每个数组
2019/12/06 Python
浅谈HTML5 Web Worker的使用
2018/01/05 HTML / CSS
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
公益活动策划方案
2014/01/09 职场文书
学术会议邀请函范文
2014/01/22 职场文书
积极向上的团队口号
2014/06/06 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书