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 16 PHP
完美解决PHP中文乱码
Nov 26 PHP
php 输出双引号&quot;与单引号'的方法
May 09 PHP
php下通过伪造http头破解防盗链的代码
Jul 03 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
php中导出数据到excel时数字变为科学计数的解决方法
Feb 03 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
Aug 05 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
php抽象类使用要点与注意事项分析
Feb 09 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 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
Codeigniter购物车类不能添加中文的解决方法
2014/11/29 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
js判断浏览器类型为ie6时不执行
2014/06/15 Javascript
简介AngularJS中$http服务的用法
2016/02/06 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
JS实现DIV高度自适应窗口示例
2017/02/16 Javascript
Angular2中如何使用ngx-translate进行国际化
2017/05/21 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
详解使用React.memo()来优化函数组件的性能
2019/03/19 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
详细解析Python当中的数据类型和变量
2015/04/25 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
python+opencv打开摄像头,保存视频、拍照功能的实现方法
2019/01/08 Python
Python获取时间戳代码实例
2019/09/24 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
电气自动化自荐信
2013/10/10 职场文书
演讲主持词
2014/03/18 职场文书
文明礼仪演讲稿
2014/05/12 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
2014年采购工作总结
2014/11/20 职场文书
公司员工安全协议书
2014/11/21 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
红色影片观后感
2015/06/18 职场文书