Implementation content: Truncate a section of text containing HTML code, but there is no containment tag does not have a closed problem.
The core components are as follows:
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;
}
出处
By dknt From bbs.blueidea.com