打印

[原创] 自动生成文章摘要[JavaScript 版本]

原创作品,转载请注明出处

By dknt From bbs.blueidea.com

搜了搜这个,发现找不到答案。所以自己写了一个,很多程序绕过这个问题,往往人工来决定在何处截断,太麻烦了。

实现内容:截断一段含有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;
}
[ 本帖最后由 dknt 于 2006-9-8 14:06 编辑 ]
本帖最近评分记录
  • bound0 威望 +4 原创内容 2006-9-8 13:05
- 回帖取义,发帖成仁... -

测试用例

测试用例如下:

 提示:您可以先修改部分代码再运行
这个测试用例应该是好使,如果不行,请在纯IE下打开本页面。

主要问题是文章不能超过20000字,还差一个 HTMLencode, HTMLdecode 没有写进去。没办法只好嵌入了。

HTMLencode, HTMLdecode 在 http://cs02.100steps.net/new/onejsneeded.js 定义。不是我写的,如果需要自己去拿吧。
我的空间速度对大家来说可能会比较慢,那我也没办法了...

[ 本帖最后由 dknt 于 2006-9-8 13:18 编辑 ]
- 回帖取义,发帖成仁... -
挺好的,加分了哦!
[Bound0 专题列表]QUE SAIS-JE?
生物信息技术支持动漫论坛动漫分享群:45274013
谢谢哦! 混了这么长时间了,我的第一篇打分的文章!看来离图标不远了...hei hei.

大家有看不懂的我负责给讲。 :D
- 回帖取义,发帖成仁... -
IE 6 测试通过
Firefox 2.0 测试无效

TOP

那个文件现在不存在了,打不开咦。
我一直哭一直哭,哭我没鞋穿。直到有一天我看到一个人,他连脚也没有……

TOP

看核心代码。我想IE 和 Firefox 只是界面上的问题,核心代码应该不牵扯两种浏览器的区别。

那个文件没有什么特别出众的的作用。一个编码转换而已,只是为了显示用的。JS 版的 htmlEncode
- 回帖取义,发帖成仁... -

TOP

不行.我加这段跟不行.
<HTML><HEAD><TITLE></TITLE>
<STYLE type=text/css>
BODY {
       MARGIN: 0px;
       background-image: url(cy_images/bj.jpg);
}
.showd {
       FILTER: Glow(Color=#ffffff, Strength=3); VERTICAL-ALIGN: text-bottom; CURSOR: hand; LINE-HEIGHT: 20px
}
A:link {
       FONT-SIZE: 12px; COLOR: #2d386e; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
A:visited {
       FONT-SIZE: 12px; COLOR: #2d386e; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
A:hover {
       FONT-SIZE: 12px; COLOR: #ff7300; TEXT-DECORATION: underline
}
A:active {
       FONT-SIZE: 12px; COLOR: #ff8600; TEXT-DECORATION: underline
}
.f14 {
       FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffffff
}
A.a04ta:link {
       FONT-SIZE: 9pt; COLOR: #ffffff; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
A.a04ta:hover {
       FONT-SIZE: 9pt; COLOR: #000000; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
A.a04ta:visited {
       FONT-SIZE: 9pt; COLOR: #ffffff; FONT-FAMILY: "宋体"; TEXT-DECORATION: none
}
A.a01_cmdh:link {
       FONT-SIZE: 14px; COLOR: #cc0000; TEXT-DECORATION: none
}
A.a01_cmdh:visited {
       FONT-SIZE: 14px; COLOR: #cc0000; TEXT-DECORATION: none
}
A.a01_cmdh:hover {
       FONT-SIZE: 14px; COLOR: #cc0000; TEXT-DECORATION: none
}
A.a03ta1:link {
       FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #cc0000; TEXT-DECORATION: none
}
A.a03ta1:visited {
       FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #cc0000; TEXT-DECORATION: none
}
A.a03ta1:hover {
       FONT-WEIGHT: normal; FONT-SIZE: 12px; COLOR: #cc0000; TEXT-DECORATION: none
}
A.a03ta2:link {
       FONT-SIZE: 12px; COLOR: #000066; TEXT-DECORATION: none
}
A.a03ta2:visited {
       FONT-SIZE: 12px; COLOR: #000066; TEXT-DECORATION: none
}
A.a03ta2:hover {
       FONT-SIZE: 12px; COLOR: #000066; TEXT-DECORATION: none
}
.f12 {
       FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ffffff
}
.ttd {
       BORDER-RIGHT: #387e8d 1px solid; BORDER-TOP: #387e8d 1px solid; BORDER-LEFT: #387e8d 1px solid; BORDER-BOTTOM: #387e8d 1px solid
}
.f13 {
       FONT-WEIGHT: bold; FONT-SIZE: 13px; COLOR: #000000
}??
A.a01topnews:link {
       FONT-SIZE: 14px; COLOR: #000000
}
A.a01topnews:visited {
       FONT-SIZE: 14px; COLOR: #000000
}
A.a01topnews:hover {
       FONT-SIZE: 14px; COLOR: #ff9900
}
A.a02right:link {
       FONT-WEIGHT: normal; FONT-SIZE: 13px; COLOR: #ffffff; LINE-HEIGHT: 17px; TEXT-DECORATION: none
}
A.a02right:visited {
       FONT-SIZE: 13px; COLOR: #ffffff; LINE-HEIGHT: 17px; TEXT-DECORATION: none
}
A.a02right:hover {
       FONT-SIZE: 13px; COLOR: #fdf3f2; LINE-HEIGHT: 17px; TEXT-DECORATION: none
}
A.a05new2:link {
       FONT-SIZE: 12px; COLOR: #000000; LINE-HEIGHT: 16px; TEXT-DECORATION: none
}
A.a05new2:visited {
       FONT-SIZE: 12px; COLOR: #000000; LINE-HEIGHT: 16px; TEXT-DECORATION: none
}
A.a05new2:hover {
       FONT-SIZE: 12px; COLOR: #ff9900; LINE-HEIGHT: 16px; TEXT-DECORATION: none
}
.boder {
       BORDER-RIGHT: #ff9900 1px solid; BORDER-TOP: #ff9900 1px solid; BORDER-LEFT: #ff9900 1px solid; BORDER-BOTTOM: #ff9900 1px solid
}
A.a05menu:link {
       FONT-SIZE: 12px; COLOR: #000000; TEXT-DECORATION: none
}
A.a05menu:visited {
       FONT-SIZE: 12px; COLOR: #000000; TEXT-DECORATION: none
}
A.a05menu:hover {
       FONT-SIZE: 12px; COLOR: #ff9900; TEXT-DECORATION: none
}
A.a06menu:link {
       FONT-SIZE: 14px; COLOR: #000000; TEXT-DECORATION: none
}
A.a06menu:visited {
       FONT-SIZE: 14px; COLOR: #000000; TEXT-DECORATION: none
}
A.a06menu:hover {
       FONT-SIZE: 14px; COLOR: #ff9900; TEXT-DECORATION: none
}
A.a07menu:link {
       FONT-SIZE: 12px; COLOR: #000000; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
A.a07menu:visited {
       FONT-SIZE: 12px; COLOR: #000000; LINE-HEIGHT: 18px; TEXT-DECORATION: underline
}
A.a07menu:hover {
       FONT-SIZE: 12px; COLOR: #ff7300; TEXT-DECORATION: underline
}
A.a07menu:active {
       FONT-SIZE: 12px; COLOR: #000000; TEXT-DECORATION: underline
}
.title {
       FONT-WEIGHT: bold; FONT-SIZE: 11pt; COLOR: #4f100d
}
</STYLE>

<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>
.boder {
       BORDER-RIGHT: #ff9900 1px solid; BORDER-TOP: #ff9900 1px solid; BORDER-LEFT: #??ff9900 1px solid; BORDER-BOTTOM: #ff9900 1px solid
}
.title1 {
       FONT-WEIGHT: bold; FONT-SIZE: 11pt; COLOR: #793100
}
.boderzs {
       BORDER-RIGHT: #ff7f00 1px solid; BORDER-TOP: #ff7f00 1px solid; BORDER-LEFT: #ff7f00 1px solid; BORDER-BOTTOM: #ff7f00 1px solid
}
.tboder {
       BORDER-RIGHT: #a8a8a8 1px solid; BORDER-TOP: #a8a8a8 1px solid; BORDER-LEFT: #a8a8a8 1px solid; BORDER-BOTTOM: #a8a8a8 1px solid
}
.tbodern {
       BORDER-RIGHT: #616161 1px solid; BORDER-TOP: #616161 1px solid; BORDER-LEFT: #616161 1px solid; BORDER-BOTTOM: #616161 1px solid
}
.inputss {
       BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; MARGIN: 1px; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; HEIGHT: 18px
}
.b1 {
       FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ffffff
}
.b2 {
       FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #000000
}
.b3 {
       FONT-SIZE: 12px; COLOR: #000000
}
A.b3:link {
       FONT-SIZE: 12px; COLOR: #000000
}
A.b3:visited {
       FONT-SIZE: 12px; COLOR: #000000
}
A.b3:hover {
       FONT-SIZE: 12px; COLOR: #ff9900
}
A.b3:active {
       FONT-SIZE: 12px; COLOR: #000000
}
.b4 {
       FONT-WEIGHT: bold; FONT-SIZE: 12px; COLOR: #ffffff; f12: 12px
}
</STYLE>
<STYLE type="text/css">
<!--
body,div,a{font:menu}
.article {
BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; FILTER: revealTrans(transition=23,duration=0.5) blendTrans(duration=0.5); POSITION: absolute; VISIBILITY: hidden
background-color: #FFCC00; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px}
.style2 {
       font-size: 9pt;
       font-weight: bold;
}
-->
</STYLE>
<SCRIPT language=JavaScript1.2>
<!--
function Show(divid) {
divid.filters.revealTrans.apply();
divid.style.visibility = "visible";
divid.filters.revealTrans.play();
}
function Hide(divid) {
divid.filters.revealTrans.apply();
divid.style.visibility = "hidden";
divid.filters.revealTrans.play();
}
//-->
</script>

<META content="MSHTML 6.00.2900.2??627" name=GENERATOR>
</HEAD>

<body>
<TABLE cellSpacing=1 width="100%" align=center bgColor=#ac231d border=0>
        <TBODY>
        <TR>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(aaa) onMouseOut=Hide(aaa)  >北山酒店</a></div>
                     <div id="aaa" class="article">餐饮类别: 大型酒店
美食口味: 龙菜  鲁菜  粤菜  川菜  农家菜   
适宜消费: 多人聚餐  喜庆婚宴  宴请贵宾   
所属区域: 道外区
具体地址: 道外区保障街92号(滨江站附近)
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 10-20个 </div></TD>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(b) onMouseOut=Hide(b)  >兴亚生态园酒店</a></div>
                     <div id="b" class="article">餐饮类别: 大型酒店
美食口味: 龙菜  鲁菜  粤菜   
适宜消费: 朋友小聚  多人聚餐  宴请贵宾  情人约会  休闲放松   
所属区域: 动力区
具体地址: 哈市动力区进乡街232号
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 1-5个 </div>
                     </TD>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(c) onMouseOut=Hide(c)  >松兰阁酒店</a></div>
                     <div id="c" class="article">餐饮类别: 大型酒店
美食口味: 粤菜  清真   
适宜消费: 朋友小聚  多人聚餐  情人约会  休闲放松   
所属区域: 道外区
具体地址: 道外区南直路(省药材公司对过)
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 5-10个 </div>
                     </TD>
          <TD width=190 height="22" bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(d) onMouseOut=Hide(d)  >宝泰隆大酒店</a></div>
                     <div id="d" class="article">餐饮类别: 特色餐厅
美食口味: 小海鲜   
适宜消费: 朋友小聚  多人聚餐  喜庆婚宴  宴请贵宾  情人约会  休闲放松   
所属区域: 香坊区
具体地址: 开发区赣水路63号
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 10-20个 </div>
                     </TD>
        </TR>
        <TR>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(e) onMouseOut=Hide(e)  >双龙鲍翅</a></div>
                     <div id="e" class="article">餐饮类别: 特色餐厅
美食口味: 龙菜  鲁菜  粤菜  川菜  湘菜   
适宜消费: 朋友小聚  多人聚餐  宴请贵宾  情人约会  休闲放松   
所属区域: 南岗区
具体地址: 昆仑商城汉水路425号
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 5-10个
营业时间:  
联系人:  
提供送餐:  
特色菜肴: 红烧翅 </div>
                     </TD>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(f) onMouseOut=Hide(f)  >红羊海鲜</a></div>
                     <div id="f" class="article">餐饮类别:????????琈?? 特色餐厅
美食口味: 粤菜  小海鲜   
适宜消费: 朋友小聚  多人聚餐  宴请贵宾  情人约会  休闲放松   
所属区域: 南岗区
具体地址: 南岗区宣庆街16号
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 5-10个 </div>
                     </TD>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(g) onMouseOut=Hide(g)  >山城老妈</a></div>
                     <div id="g" class="article">餐饮类别: 风味特色
美食口味: 川菜   
适宜消费: 朋友小聚  多人聚餐  喜庆婚宴  情人约会  休闲放松   
所属区域: 道里区
具体地址: 道里区哈药路336号
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 5-10个 </div>
                     </TD>
          <TD width=190 height="22" bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(h) onMouseOut=Hide(h)  >巴伐利亚名人店</a></div>
                     <div id="h" class="article">餐饮类别: 西餐料理
美食口味: 鲁菜  川菜  自助餐  西餐   
适宜消费: 朋友小聚  多人聚餐  宴请贵宾  品茶聊天  情人约会  休闲放松   
所属区域: 道里区
具体地址: 南岗区西大直街100号   
包厢: 有包房
车位: 10-20个 </div>
                     </TD>
        </TR>
        <TR>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(i) onMouseOut=Hide(i)  >重庆秦妈老火锅</a></div>
                     <div id="i" class="article">餐饮类别: 火锅烧烤
美食口味:  
适宜消费: 朋友小聚  多人聚餐  情人约会  休闲放松   
所属区域: 南岗区
具体地址: 长江路96号   
包厢: 有包房
车位: 5-10个 </div>
                     </TD>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(j) onMouseOut=Hide(j)  >裕昌肥牛府</a></div>
                     <div id="j" class="article">餐饮类别: 火锅烧烤
美食口味: 龙菜  鲁菜  粤菜  上海菜   
适宜消费: 朋友小聚  多人聚餐  情人约会  休闲放松   
所属区域: 道外区
具体地址: 道外区红旗大街701号   
包厢: 有包房
车位: 5-10个 </div>
                     </TD>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(k) onMouseOut=Hide(k)  >凯旋门休闲美食城</a></div>
                     <div id="k" class="article">消费最少,吃得最好!
餐饮类别: 火锅烧烤
美食口味: 龙菜  鲁菜  自助餐   
适宜消费: 朋友小聚  多人聚餐  情人约会  休闲放松   
所属区域: 南岗区
具体地址: 南岗区铁路街200号   
包厢: 有包房
车位: 5-10个 </div>
                     </TD>
          <TD width=190 height="22" bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(l) onMouseOut=Hide(l)  >慕尼黑啤酒庄园</a></div>
                     <div id="l" class="article">餐饮类别: 西餐料理
美食口味: 川菜  西餐   
适宜消费: 朋友小聚  多人聚餐  宴请贵宾  情人约会 ????????琈?? 休闲放松   
所属区域: 南岗区
具体地址: 南岗区建设街142号
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 5-10个 </div>
                     </TD>
        </TR>
        <TR>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(v) onMouseOut=Hide(v)  >皇牌名粥</a></div>
                     <div id="v" class="article">餐饮类别: 早茶宵夜
美食口味: 粤菜  小海鲜   
适宜消费: 朋友小聚  多人聚餐  情人约会  休闲放松   
所属区域: 道里区
具体地址: 道里店:道里区经纬五道街29号,电话:84218183 南岗店:南岗宽桥街1号电话:82567999
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 1-5个 </div>
                     </TD>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(w) onMouseOut=Hide(w)  >鲁味楼</a></div>
                     <div id="w" class="article">餐饮类别: 风味特色
美食口味: 鲁菜   
适宜消费: 朋友小聚  多人聚餐  喜庆婚宴  休闲放松   
所属区域: 南岗区
具体地址: 南岗区汉广街49号
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 5-10个  </div>
                     </TD>
          <TD width=190 bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(y) onMouseOut=Hide(y)  >薛府一品酱骨</a></div>
                     <div id="y" class="article">餐饮类别: 风味特色
美食口味:  
适宜消费: 朋友小聚  多人聚餐  喜庆婚宴  休闲放松   
所属区域: 道里区
具体地址: 道里区通达街329号
交通路线:  
大厅餐桌:  
包厢: 有包房
车位: 5-10个 </div>
                     </TD>
          <TD width=190 height="22" bgColor=#f5f6fa>
            <div align="center"><a href="#" onMouseOver=Show(z) onMouseOut=Hide(z)  >银河大酒店</a></div>
                     <div id="z" class="article">餐饮类别: 大型酒店
美食口味: 龙菜  鲁菜  粤菜  川菜  湘菜   
适宜消费: 朋友小聚  多人聚餐  宴请贵宾  情人约会  休闲放松   
所属区域: 南岗区
具体地址: 南岗区中山路252号
交通路线:  
大厅餐桌:  
包厢: 20个以上
车位: 10-20个 </div>
                     
                     </TD>
        </TR></TBODY></TABLE>
</body>
</html>
www.111cn.cn网页制作,网络编程

TOP

咋出错啦

TOP

没有通过

TOP

原因是 http://cs02.100steps.net/new/onejsneeded.js 已经丢了... 我过后会再补上
- 回帖取义,发帖成仁... -

TOP

还不补……

=你补

补不补?

TOP