function HtmlClose($body) {$strlen_var = strlen($body);//不包含 html 标签

if (strpos($body, ‘

}//html 代码标记

$html_tag = 0;//摘要字符串

$summary_string = ‘‘;/**

* 数组用作记录摘要范围内出现的 html 标签

* 开始和结束分别保存在 left 和 right 键名下

* 如字符串为:

a,假设 p 未闭合

* 数组则为:array(‘left‘ => array(‘h3‘, ‘p‘, ‘b‘), ‘right‘ => ‘b‘, ‘h3‘);

* 仅补全 html 标签,

$html_array = array(‘left‘ => array(), ‘right‘ => array());for ($i = 0; $i < $strlen_var; ++$i) {$current_var = substr($body, $i, 1);if ($current_var == ‘

$html_tag = 1;$html_array_str = ‘‘;

}else if ($html_tag == 1) {//一段 html 代码结束

if ($current_var == ‘>‘) {/**

* 去除首尾空格,如
< img src="" / > 等可能出现首尾空格*/

$html_array_str = trim($html_array_str);/**

* 判断最后一个字符是否为 /,若是,则标签已闭合,不记录*/

if (substr($html_array_str, -1) != ‘/‘) {//判断第一个字符是否 /,若是,则放在 right 单元

$f = substr($html_array_str, 0, 1);if ($f == ‘/‘) {//去掉 /

$html_array[‘right‘][] = str_replace(‘/‘, ‘‘, $html_array_str);

}else if ($f != ‘?‘) {//判断是否为 ?,若是,则为 PHP 代码,跳过

/**

* 判断是否有半角空格,若有,以空格分割,第一个单元为 html 标签

* 如

*/

if (strpos($html_array_str, ‘ ‘) !== false) {//分割成2个单元,可能有多个空格,如:

$html_array[‘left‘][] = strtolower(current(explode(‘ ‘, $html_array_str, 2)));

}else{/**

* * 若没有空格,整个字符串为 html 标签,如:

* 统一转换为小写*/

$html_array[‘left‘][] = strtolower($html_array_str);

}

}

}//字符串重置

$html_array_str = ‘‘;$html_tag = 0;

}else{/**

* 将< >之间的字符组成一个字符串

* 用于提取 html 标签*/

$html_array_str .= $current_var;

}

}else{//非 html 代码才记数

--$size;

}$ord_var_c = ord($body{$i});switch (true) {case (($ord_var_c & 0xE0) == 0xC0):

//2 字节

$summary_string .= substr($body, $i, 2);$i += 1;break;case (($ord_var_c & 0xF0) == 0xE0):

//3 字节

$summary_string .= substr($body, $i, 3);$i += 2;break;case (($ord_var_c & 0xF8) == 0xF0):

//4 字节

$summary_string .= substr($body, $i, 4);$i += 3;break;case (($ord_var_c & 0xFC) == 0xF8):

//5 字节

$summary_string .= substr($body, $i, 5);$i += 4;break;case (($ord_var_c & 0xFE) == 0xFC):

//6 字节

$summary_string .= substr($body, $i, 6);$i += 5;break;default:

//1 字节

$summary_string .= $current_var;

}

}if ($html_array[‘left‘]) {/**

* 比对左右 html 标签,不足则补全*/

/**

* 交换 left 顺序,补充的顺序应与 html 出现的顺序相反

* 如待补全的字符串为:

abcabc

abc

* 补充顺序应为:

*/

$html_array[‘left‘] = array_reverse($html_array[‘left‘]);foreach ($html_array[‘left‘] as $index => $tag) {//判断该标签是否出现在 right 中

$key = array_search($tag, $html_array[‘right‘]);if ($key !== false) {//出现,从 right 中删除该单元

unset($html_array[‘right‘][$key]);

}else{//没有出现,需要补全

$summary_string .= ‘‘ . $tag . ‘>‘;

}

}

}return $summary_string;

}

html标签闭合在线检测,HP自动检查html标签是否闭合(示例代码)相关推荐

  1. python贴吧发帖脚本-Python实现自动添加脚本头信息的示例代码

    前言 每个人写脚本时的格式都会有所不同,有的会注明脚本本身的一些信息,有的则开门见山,这在小团队里其实没什么,基本别人做什么你也都知道,但如果放到大的团队就比较麻烦了,因为随着人数的增多,脚本成指数增 ...

  2. ai自动写JAVA代码,人工智能自动写作软件2.0时代(示例代码)

    大家好,人工智能人工智能(ai)的定义是计算机科学的一个分支,自20世纪70年代以来被称为世界三大最先进技术之一(空间技术.能源技术和人工智能).它有许多定义,它们都是有意义的,没有对错之分.人工智能 ...

  3. js输出语句()可以包含html标签,JS简介,JS如何实现输入输出语句、注释(示例代码)...

    JavaScript 简介 JavaScript 是世界上最流行的编程语言 可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备 JavaScript一种直译式 ...

  4. wan口有流量但电脑上不了网_路由器wan口流量_双WAN口路由器配置(WAN口设置/WAN口在线检测/流量均衡控制)_路由器检测不到wan...

    双WAN口路由器配置(WAN口设置/WAN口在线检测/流量均衡控制) 不少网吧都采用了双WAN路由器的双WAN口接入设计,但是对于如何使用好这样的设备,用户有不少疑问,我们针对这种路由器中的WAN口设 ...

  5. 五大APP安全在线检测平台对比

    五大APP安全在线检测平台对比 时间  2017-10-31 标签 APP自动化检测 Android安全 移动安全 ios安全 栏目 系统安全 原文   http://1425831735.blog. ...

  6. python刷今日头条访问量_Python 自动刷博客浏览量实例代码

    怎么利用python爬取csdn博客访问量例子 如何使用python来爬取自己博客访问量承认吧,小编们都是在深夜里崩溃的俗人.晚安,世界. 博客网站上有访问量这个记录么 如果有就可以抓取网站下来,正则 ...

  7. 24个Web前端人员不能错过的在线检测网站汇总

    标签: Html检测 / css错误检测 / 代码规范 / seo工具 在用IE浏览网站时,发现下面显示"网页上有错误",虽然不影响浏览,但总归让人感觉不舒服,大概多数站长都遇到过 ...

  8. 实时获取ccd图像_薄膜瑕疵在线检测系统0.1mm检测精度_实时在线检测

    原标题:薄膜瑕疵在线检测系统检测精度_实时在线检测 在薄膜的实际生产过程中,由于各方面因素的影响,薄膜表面会出现诸如孔洞.蚊虫.黑点.晶点.划伤.斑点等瑕疵,严重影响了薄膜的质量,给生产商带来了不必要 ...

  9. 一些在线检测网站打开速度工具大分享

    一些在线检测网站打开速度工具大分享 网页载入速度对于一个网站来讲很关键,Google已经将一个网站的载入速度列入了网站关键字seo排名的考虑因素当中,也就是说如果你的网站有足够的内容,而且载入速度比别 ...

最新文章

  1. Ubuntu 镜像使用帮助
  2. 庖丁解牛迭代器,聊聊那些藏在幕后的秘密
  3. CSS 公共样式分享
  4. Python3网络爬虫——(4)urllib.error异常处理
  5. 2 image pil 转_pdf转图片,php语言和Java语言的两种方法
  6. codeforces1485 F. Copy or Prefix Sum(dp)
  7. 前端与java绘制三维图_使用HTML5 Canvas绘制三维波浪图算法和实现
  8. 基于ConvLSTM的伦敦空气质量预测(1) 数据处理
  9. setAttribute在设置属性 ieBug
  10. TextSnake文本检测
  11. linux 文件查找_Linux中的文件内查找小技巧
  12. 数学软件Maple使用教程
  13. sql 多表连接多条件匹配查询,按匹配度排序
  14. 新手可以操作的日赚50元的网赚项目
  15. 浏览器是如何渲染网页的
  16. 通过精读一本英文技术书籍搞定英语
  17. 钓鱼邮件检测(本科毕设)
  18. 获取当天零点/最晚时间戳
  19. C#WinFormRS232串口工具
  20. 三相直流无刷电机驱动

热门文章

  1. 01 Redis源码起航
  2. B站高性能微服务架构
  3. 微软windows7正版化(算你狠)授权过期解决方案
  4. android广播 有序 无序,Android中的有序和无序广播浅析
  5. kali查看进程PS
  6. Oracle 常用工具和问题分析
  7. c语言程序结构设计的心得,写给新手 选择结构程序设计总结
  8. 如何使用纯 CSS 制作四子连珠游戏
  9. 第六篇 VGGNet——模型精讲
  10. 计算机网络多项式的定义,使用多项式方法定义一个圆