var getAbstract=function(n){
n=(n)?parseInt(n)-1:-1;//0 - n-1的字符长度为n.
var html=null;
if (config.htmlOn == true)
{
var div=document.createElement("DIV");
div.innerHTML=Editor.editor.contentWindow.document.body.innerHTML;
html=div.innerText;
delete div;
}
else
{
html=Editor.editor.contentWindow.document.body.innerHTML;
}
html=html.replace(/<\s*script[^>]*>.*<\s*\/script[^>]*>/ig,"").replace(/<\s*script[^>]*>/ig,"").replace(/<\s*\/script[^>]*>/ig,"");
if(n>0)
{
//匹配所有的HTML Tag
var pattern='<[^>]*>';
var reg = new RegExp(pattern,'ig');
var lastIndex=n;
var arr;
//循环直到第n个字符在当前匹配式之间或者之前时跳出
while ((arr = reg.exec(html)) != null)
{
//当下一个匹配式<*>(表示为Tag)的起始位置超过n,则表示第n个字符处在当前匹配式之前
if(arr.index>=n)break;
//此时两种情况,一种是第n个字符在当前匹配式之间,另一种是当前匹配式在第n个字符之前
lastIndex=arr.lastIndex;
//当下一个匹配式<*>(表示为Tag)的结束位置超过n,则表示第n个字符处在当前匹配式之间
if(lastIndex>=n)break;
}
//为了不截断第n个字符附近的Tag,需要根据情况重新指定截断的位置
//第n个字符在循环中跳出时的匹配式之间的时候,需要将n指定到该匹配式的结束处,以免截断
if(lastIndex>n)n=lastIndex;
//匹配一些不能被截断的前后都必须有的HTML TAG
var tags='table|div|span|b|i|u|ul|ol|strong|embed|object|center|strike|iframe';
function recursionRegular(n)
{
if(n==1)
{
return '[^<]*((<\s*\\1[^>]*'+'.*' +'</\s*\\1[^>]*>)|(<(?!/?\s*\\1)[^>]*>[^<]*))*[^<]*';
}
else
{
return '[^<]*((<\s*\\1[^>]*'+recursionRegular(n-1)+'</\s*\\1[^>]*>)|(<(?!/?\s*\\1)[^>]*>[^<]*))*[^<]*';
}
}
pattern='<\s*('+tags+')[^>]*>'+recursionRegular(4)+'</\s*\\1[^>]*>';
// pattern='<\s*(table|div|span|b|i|u|ul|ol|strong|embed|object|center|strike|iframe|button)[^>]*>[^<]*</\s*\\1[^>]*>';
reg = new RegExp(pattern,'ig');
//循环直到第n个字符在当前匹配式之间或者之前时跳出
while ((arr = reg.exec(html)) != null)
{
//当下一个匹配式<*>(表示为Tag)的起始位置超过n,则表示第n个字符处在当前匹配式之前
if(arr.index>=n)break;
//此时两种情况,一种是第n个字符在当前匹配式之间,另一种是当前匹配式在第n个字符之前
lastIndex=arr.lastIndex;
//当下一个匹配式<*>(表示为Tag)的结束位置超过n,则表示第n个字符处在当前匹配式之间
if(lastIndex>=n)break;
}
//为了不截断第n个字符附近的Tag,需要根据情况重新指定截断的位置
//第n个字符在循环中跳出时的匹配式之间的时候,需要将n指定到该匹配式的结束处,以免截断
if(lastIndex>n)n=lastIndex;
return html.substring(0,n);
}
else
{
return html;
}
}
获取指定长度html代码摘要的js函数
最新推荐文章于 2024-04-22 09:38:46 发布
本文介绍了一种JavaScript实现的从HTML内容中提取指定长度文本摘要的方法,通过正则表达式去除脚本标签并考虑了HTML标签的影响,确保摘要内容的完整性和准确性。
225

被折叠的 条评论
为什么被折叠?



