关于HTML及UBB标记的闭合

代码还有待完善:


代码如下:

<script type="text/javascript"> 
 // Close HTML Tags -------------------------------------------- 
  function closeHTML(str){ 
 var arrTags=["span","font","b","u","i","h1","h2","h3","h4","h5","h6","p","li","ul","table","div"];

for(var i=0;i<arrTags.length;i++){ 
 var intOpen=0; 
 var intClose=0;

var  re=new RegExp("\\<"+arrTags[i]+"( [^\\<\\>]+|)\\>","ig"); 
 var arrMatch=str.match(re); 
 if(arrMatch!=null) intOpen=arrMatch.length;

re=new RegExp("\\<\\/"+arrTags[i]+"\\>","ig"); 
 arrMatch=str.match(re); 
 if(arrMatch!=null) intClose=arrMatch.length;

for(var j=0;j<intOpen-intClose;j++){ 
 str+="</"+arrTags[i]+">"; 
 } 
 /*for(var j=(intOpen-intClose-1);j>=0;j--){ 
 str+="</"+arrTags[i]+">"; 
 }*/ 
 }

return str; 
 }

// Close UBB Tags -------------------------------------------- 
 function closeUBB(str){ 
 var arrTags=["code","quote","list","color","align","font","size","b"];

for(var i=0;i<arrTags.length;i++){ 
 var intOpen=0; 
 var intClose=0;

var  re=new RegExp("\\["+arrTags[i]+"(=[^\\[\\]]+|)\\]","ig"); 
 var arrMatch=str.match(re); 
 if(arrMatch!=null) intOpen=arrMatch.length;

re=new RegExp("\\[\\/"+arrTags[i]+"\\]","ig"); 
 arrMatch=str.match(re); 
 if(arrMatch!=null) intClose=arrMatch.length;

for(var j=0;j<intOpen-intClose;j++){ 
 str+="[/"+arrTags[i]+"]"; 
 } 
 }

return str; 
 }

alert(closeHTML("正常:<div class='testBox'><ul><li><b>加粗</b><span>字体哈哈")); 
 alert(closeHTML("有错:<div class='testBox'><p><ul><li><b>加粗</b><span>字体哈哈")); 
</script>

(0)

相关推荐

  • 关于HTML及UBB标记的闭合

    代码还有待完善: 复制代码 代码如下: <script type="text/javascript">   // Close HTML Tags --------------------------------------------    function closeHTML(str){   var arrTags=["span","font","b","u","i",&q

  • .Net 项目代码风格要求小结

    PDF版下载:项目代码风格要求V1.0.pdf 代码风格没有正确与否,重要的是整齐划一,这是我拟的一份<.Net 项目代码风格要求>,供大家参考. 1. C# 代码风格要求1.1注释 类型.属性.事件.方法.方法参数,根据需要添加注释. 如果类型.属性.事件.方法.方法参数的名称已经是自解释了,不需要加注释:否则需要添加注释. 当添加注释时,添加方式如下图所示: 1.2 类型(类.结构.委托.接口).字段.属性.方法.事件的命名 优先考虑英文,如果英文没有合适的单词描述,可以使用拼音,使用中文

  • asp之自动闭合HTML/ubb标签函数附简单注释

    Function closeUBB(strContent) '************************************* '自动闭合UBB '************************************* Dim arrTags, i, OpenPos, ClosePos, re, strMatchs, j, Match Set re = New RegExp '申明re对象 re.IgnoreCase = True '设置是否区分字符大小写 re.Global =

  • asp之自动闭合HTML/ubb标签函数 附简单注释

    这最近在PJ的function库里看到的这个函数,感觉思路差了点,不过相对比较完美,只是闭合标签时的顺序问题,呵呵 修改一下数组arrTags里的各元素内容,可以达到闭合任何标签的功能. 在此,我给增加了一些注释,方便大家一起学习学习 复制代码 代码如下: Function closeUBB(strContent) '************************************* '自动闭合UBB '************************************* Dim

  • js自动闭合html标签(自动补全html标记)

    复制代码 代码如下: <script type="text/javascript"> // Close HTML Tags -------------------------------------------- function closeHTML(str){ var arrTags=["span","font","b","u","i","h1",&qu

  • UBB代码在论坛中的应用

    一.读者指引 读者指引帮助你掌握本文的梗概.以免你看了大半才明白这编文章不适合你,给你造成视觉污染. 如果你正在用ASP写程序,或者你正在写一些诸如BBS.留言溥或表单数据检查之类的东东那就值得一看. 如果你对正则表达式已经了如指掌,那么你不必一行行的看,只要看看我写的模板,再比较一下,取其精华就行了. 如果你还是第一次接触正则表达式,那么你最好一行行的看,并逐条试验 当你熟练的掌握了正则表达式的用法,你就会发现其乐无穷. 二.正则表达式的概念 什么是UBB代码?什么是正则表达式? UBB代码是

  • 截字符串 去除HTML标记

    <%'**************************************************'函数名:gotTopic'作 用:截字符串,汉字一个算两个字符,英文算一个字符'参 数:str ----原字符串' strlen ----截取长度'返回值:截取后的字符串'**************************************************function gotTopic(str,strlen)if str="" thengotTopic=

  • 论坛UBB代码 推荐

    复制代码 代码如下: <%dim param,smiles  'param是UBB标签完全可用的标记 param=full 则完全可用,否则不支持一些占位大的标签 smiles是禁止笑脸转换function UBBCode(content)dim n,i'on error resume nextset re=new regexpre.IgnoreCase=truere.global=true re.pattern="\[code\](\r\n)?([\s\S]+?)\[\/code\]&q

  • 一个改进的UBB类

    <?php /* 如有转载,请注明作者 原作者: 何志强 改进: SonyMusic[ sonymusic@163.net ] 文件: ubb.php 备注: 说是改进,其实核心函数parse()已经完全重写了,而且思路也是不一样的. 不过仍是受何志强的例子的启发,而且测试的例子还有URLCHECK等几个函数也是沿用的何志强的程序,谢谢何志强. 目前还没有颜色的功能,但我会加入的. 如果在程序上有什么BUG或不便的地方,请给我MAIL. 谢谢! 改进功能: 对字符串进行UBB编码,该类目前只支持

  • PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)

    fixHtmlTag version 0.2 这个版本解决了上次遗留的问题,即就近闭合和嵌套闭合问题.具体可以看代码的注释. 复制代码 代码如下: <?php /** * fixHtmlTag * * HTML标签修复函数,此函数可以修复未正确闭合的 HTML 标签 * * 由于不确定性因素太多,暂时提供两种模式"嵌套闭合模式"和 * "就近闭合模式",应该够用了. * * 这两种模式是我为了解释清楚此函数的实现而创造的两个名词, * 只需明白什么意思就行.

随机推荐