Posted in Javascript onMarch 20, 2007
很多程序绕过这个问题,往往人工来决定在何处截断,太麻烦了。
实现内容:截断一段含有HTML代码的文本,但是不会出现围堵标记没有封闭的问题。
一个PHP版本的在这里!: 自动生成文章摘要[PHP版本]。
核心部分如下:
function Generate_Brief(text,length){ if(text.length < length) return text; var Foremost = text.substr(0,length); var re = /<(\/?)(BODY|SCRIPT|P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|OBJECT|A|UL|OL|LI|BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|SPAN)[^>]*(>?)/ig; var Singlable = /BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT/i var Stack = new Array(), posStack = new Array(); while(true){ var newone = re.exec(Foremost); if(newone == null) break; if(newone[1] == ""){ var Elem = newone[2]; if(Elem.match(Singlable) && newone[3]!= ""){ continue; } Stack.push(newone[2].toUpperCase()); posStack.push(newone.index); if(newone[3] == "") break; }else{ var StackTop = Stack[Stack.length-1]; var End = newone[2].toUpperCase(); if(StackTop == End){ Stack.pop(); posStack.pop(); if(newone[3] == ""){ Foremost = Foremost+">"; } } }; } var cutpos = posStack.shift(); Foremost = Foremost.substring(0,cutpos); return Foremost; }
自动生成文章摘要的代码[JavaScript 版本]
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@