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&amp;mysql(四)
Oct 09 PHP
使用Limit参数优化MySQL查询的方法
Nov 12 PHP
php面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
使用PHP实现二分查找算法代码分享
Jun 24 PHP
PHP屏蔽过滤指定关键字的方法
Nov 03 PHP
phplot生成图片类用法详解
Jan 06 PHP
YiiFramework入门知识点总结(图文教程)
Dec 28 PHP
php多线程并发实现方法
Sep 30 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
Laravel如何使用Redis共享Session
Feb 23 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
建立动态的WML站点(二)
2006/10/09 PHP
ThinkPHP中session函数详解
2016/09/14 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
Function.prototype.call.apply结合用法分析示例
2013/07/03 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
很不错的两款Bootstrap Icon图标选择组件
2016/01/28 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
使用vue实现grid-layout功能实例代码
2018/01/05 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
2019/06/19 Javascript
[19:14]DOTA2 HEROS教学视频教你分分钟做大人-维萨吉
2014/06/24 DOTA
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
Python使用logging模块实现打印log到指定文件的方法
2018/09/05 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
解释一下抽象方法和抽象类
2016/08/27 面试题
2015年敬老月活动总结
2015/03/27 职场文书
新郎结婚感言
2015/07/31 职场文书
CAD实训总结范文
2015/08/03 职场文书
OpenCV-Python实现油画效果的实例
2021/06/08 Python
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python