利用PHP怎么修复未正常关闭的HTML标签

  介绍

这篇文章将为大家详细讲解有关利用PHP怎么修复未正常关闭的HTML标签,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

具体方法如下:

& lt; ? php /* *,   *,fixHtmlTag    *,   *,HTML标签修复函数,此函数可以修复未正确闭合的,HTML 标签,   *,   *,由于不确定性因素太多,暂时提供两种模式”嵌套闭合模式”和,   *,”就近闭合模式”,应该够用了只   *,   *,这两种模式是我为了解释清楚此函数的实现而创造的两个名词,,   *,只需明白什么意思就行只   *,1,嵌套闭合模式,鸟巢,为默认的闭合方式。即,“& lt; body> & lt; div>你好“,   *,这样的,html 代码会被修改为,“& lt; body> & lt; div>你好& lt;/div> & lt;/body>“,   *,2,就近闭合模式,接近,这种模式会将形如,“& lt; p>你好& lt; p>为什么没有,   *,闭合呢“,的代码修改为,“& lt; p>你好& lt;/p> & lt; p>为什么没有闭合呢& lt;/p>“,   *,   *,在嵌套闭合模式(默认,无需特殊传参)下,可以传入需要就近闭合的,   *,标签名,通过这种方式将类似,“& lt; body> & lt; p>你好& lt;/p> & lt; p>我也好“,转换为,   *,“& lt; body> & lt; p>你好& lt;/p> & lt; p>我也好& lt;/p> & lt;/body>“的形式只   *,传参时索引需要按照如下方式写,不需要修改的设置可以省略,   *,   *,param 美元;=,阵列(,   *,& # 39;html # 39;,=祝辞,& # 39;& # 39;,,//必填,   *,& # 39;选项# 39;,=祝辞,阵列(,   *,& # 39;tagArray& # 39;,=祝辞,数组(),,   *,& # 39;类型# 39;,=祝辞,& # 39;巢# 39;,,   *,& # 39;长度# 39;,=祝辞,null,,   *,& # 39;lowerTag& # 39;,=祝辞,真的,,   *,& # 39;XHtmlFix& # 39;,=祝辞,真的,,   *,),   *,),,   *,fixHtmlTag(参数),,   *,   *,上面索引对应的值含义如下,   *,string  html 美元;需要修改的,html 代码,   *,array  tagArray 美元;当为嵌套模式时,需要就近闭合的标签数组,   *,string  type 美元;模式名,目前支持,NEST 和,CLOSE 两种模式,如果设置为,关闭,将会忽略参数,tagArray 美元;的设置,而全部就近闭合所有标签,   *,ini  length 美元;如果希望截断一定长度,可以在此赋值,此长度指的是字符串长度,   *,bool  lowerTag 美元;是否将代码中的标签全部转换为小写,默认为,TRUE    *,bool  XHtmlFix 美元;是否处理不符合,XHTML 规范的标签,即将,& lt; br>,转换为,& lt; br /祝辞,   *,   *,@author 它不倒翁,& lt; itbudaoweng@gmail.com>,,   *,@version  0.2,   *,@link  http://yungbo.com 它不倒翁,   *,@link  http://enenba.com/?post=19 某某,   *,@param  array  param 美元;数组参数,需要赋予特定的索引,   *,@return  string  result 美元;经过处理后的,html 代码,   *,@since  2012 - 04 - 14,   */,   function  fixHtmlTag ($ param =,数组()),{,//参数的默认值,   时间=美元html  & # 39; & # 39;,,   数组$ tagArray =, ();,   时间=美元type  & # 39;巢# 39;,,   将$ length =零;祝福;   $ lowerTag =,真的,,   $ XHtmlFix =,真的,,//首先获取一维数组,即,html 美元;和,options 美元;(如果提供了参数),   提取(参数),,//如果存在,选项,提取相关变量,   if (收取(选项)美元),{,   提取(选项),,   },   时间=美元result  & # 39; & # 39;,,//最终要返回的,html 代码,   数组$ tagStack =,();,//标签栈,用,array_push(),和,最后(),模拟实现,   数组$ contents =,();,//用来存放,html 标签,   len 美元;=,0,,//字符串的初始长度,//设置闭合标记,美元的空当,默认为,真的,,如果需要就近闭合,成功匹配开始标签后其值为,假的,成功闭合后为,true    $ isClosed =,真的,,//将要处理的标签全部转为小写,   $ tagArray =,到(& # 39;函数# 39;,,tagArray美元),,//合“法”的单闭合标签,=,阵列(singleTagArray 美元;   & # 39;& lt;元# 39;,,   & # 39;& lt;链接# 39;,,   & # 39;& lt;基地# 39;,,   & # 39;& lt; br # 39;,,   & # 39;& lt;人力资源# 39;,,   & # 39;& lt;输入# 39;,,   & # 39;& lt; img # 39;,   ),,//校验匹配模式,美元类型,默认为,NEST 模式,   type 美元;=,strtoupper(类型),,   if  (! in_array($类型,数组(& # 39;巢# 39;,,& # 39;关闭# 39;))),{,   时间=美元type  & # 39;巢# 39;,,   },//以一对,& lt;,和,祝辞,为分隔符,将原,html 标签和标签内的字符串放到数组中,   $ contents =, preg_split (“/(& lt;[^的在]+ ?祝辞)/si",,美元html,, 1,, PREG_SPLIT_NO_EMPTY  |, PREG_SPLIT_DELIM_CAPTURE),,   foreach  (contents 美元;as  $ tag), {,   if (& # 39; & # 39;,==,修剪(标签)美元),{,   result 美元。=,标签;美元,   继续,,   },//匹配标准的单闭合标签,如& lt; br /祝辞,   if  (preg_match (“/& lt; (\ w +)[^ \/祝辞]* ? \/在/si",,标签美元)),{,   result 美元。=,标签;美元,   继续,,   },//匹配开始标签,如果是单标签则出栈,   else  if  (preg_match (“/& lt; (\ w +)[^ \/祝辞]* ?祝辞/si",,标签,美元,$匹配)),{,//如果上一个标签没有闭合,并且上一个标签属于就近闭合类型,//则闭合之,上一个标签出栈,//如果标签未闭合,   if  (false ===,空当美元),{,//就近闭合模式,直接就近闭合所有的标签,   if (& # 39;关闭# 39;,==,美元类型),{,   result 美元。=,& # 39;& lt;/& # 39;,只结束(tagStack美元),只& # 39;祝辞& # 39;,,   最后(tagStack美元),,   },   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

利用PHP怎么修复未正常关闭的HTML标签