javascript实现的html内容截断,得到文章列表中的摘要信息。一般博客的首页只显示文章的摘要,点击标题进入以后查看全文。
下面是JavaScript实现的html内容截断,获取html文章内容的摘要。
function removelosttag(tags, nowtag) {
for (var i = tags.length - 1; i >= 0;i-- ) if (tags[i].indexOf(nowtag) == 1) { tags.splice(i, 1); break; }
}
function HtmlSubstring(html, len) {
var entity = [], htmlTag = [], arrWord, r = "", rWordCount = 0, wordNum
, rxSingle = /^]+>/, rxTagName = /]*>/i
, inputHTMLTag = []
,nowtag,losetag;
//替换字符§为他的实体“§”,以便进行下一步替换
html = html.replace(/§/g, '§');
//替换实体为特殊字符§
html = html.replace(/&[^;]+;/g, function ($0) { entity[entity.length] = $0; return '§'; });
//搜集HTML标签并且替换为其他内容,以便拆分内容
html = html.replace(/]+>/g, function ($0) { htmlTag[htmlTag.length] = $0; return '_HTMLTAG_'; });
arrWord = html.split('_HTMLTAG_');
wordNum = arrWord.length;
for (var i = 0; i < wordNum; i++) {
if (rWordCount + arrWord[i].length >= len) r += arrWord[i].substring(0, len - rWordCount);
else r += arrWord[i];
rWordCount += arrWord[i].length;
if (rWordCount >= len) break;
//搜集已经添加的非单标签
if (i < wordNum - 1) {
if (!rxSingle.test(htmlTag[i])) {//不是单标签
if (rxEndTag.test(htmlTag[i])) {//这里注意区分结束标签是否和最近一次加入的标签匹配
nowtag = rxTagName.exec(htmlTag[i])[1].toLowerCase();
losetag = rxTagName.exec(inputHTMLTag[inputHTMLTag.length - 1])[1].toLowerCase();
inputHTMLTag.pop(); //弹出最近加入开始标签
if (nowtag != losetag) {
r += '' + losetag + '>'; //补全
removelosttag(inputHTMLTag, nowtag);
}
}
else inputHTMLTag[inputHTMLTag.length] = htmlTag[i].toLowerCase(); //非结束标签则添加
}
r += htmlTag[i];
}
}
//替换回实体
for (k in entity) r = r.replace('§', entity[k]);
//封闭标签
for (var i = inputHTMLTag.length - 1; i >= 0; i--) r += '' + rxTagName.exec(inputHTMLTag[i])[1] + '>';
return r;
}
document.writeln('');
//document.writeln(HtmlSubstring('正常字符串测试', 5));
//document.writeln(HtmlSubstring('带标签的字符串截断', 5));
//document.writeln(HtmlSubstring('嵌套标签截断测试lala', 9));
//document.writeln(HtmlSubstring('嵌套标签截断测试', 5));
//document.writeln(HtmlSubstring('1
©签截断
', 6));document.writeln(HtmlSubstring('
关键字:webservice web服务
直接访问“xxxx.asmx/方法名称”获取方法返回内容时,如果未配置过web.config文 件,会出现下面的错误
“/”应用程序中的服务器错误。 '));
document.writeln('');
加支付宝好友偷能量挖...
2012-1-31Web开发网