如何加强文章简介的截取功能 (附:解决问题之后的小结)
我是一个初学者,请求资深者友情帮助。原代码:
我自己使用的一个搏客,在文章预览时可以截取文章开始的一段字符,代码虽然简单,但不理想。代码如下:
程序代码:
<% IF Len(blogEntry) > 50 THEN blogEntry=left(blogEntry,50) blogEntry=blogEntry+" ......" END IF Response.Write(blogEntry) %>
注:blogEntry 为数据库提取的文章内容,截断前50个字符作为简介内容写出。
Response.Write(blogEntry) 为截取后的文章简介输出。
问题1:如果文章前50个字符内包含了被截断的HTTP标签则页面将出错;比如文章只显示一个图片:
<P><IMG style="WIDTH: 500px; HEIGHT: 353px" "http://www1.
那么截取前50个字符后将会出现显示错误。
问题2:文章的开始用了回车或者使用了段落格式,截取后仍保留了其段落格式,极为不美观。
这里是本人的搏客地址:http://www1.
===========================================================================================
想要解决问题的设想:
1)能否判断出并处理HTTP的围堵标签;以免截断后页面输出出现错误;
2)使中、英文字符在截取后长度相等,以求页面美观;
3)截取后的文章简介消除掉原来的段落格式,比如<BR> 、<P>等。
本人也在网上搜索了相关代码,大多是用JS函数写的,我用代入法进行调试,但总是有一些错误出现。在此,希望有能力者能跟据源码帮助解决以上问题,希望是用ASP语句,代码以简练为佳。先谢了!
[bo]增补:解决问题的小结[/bo]
------------------------------------------------------------------------
本帖得到众多朋友的热心帮助,再次表示谢意!并作个小结如下,以供借鉴。
[bo]1)文章内容截取后首页的简介版式整齐了[/bo]
本帖发表后,很快得到了[bo] hxfly [/bo]的回帖,提出将截取内容消除HTTP的标记,这样截取出来的简介内容就不存在原有的段落格式了。经最后测试,方法有效。
[bo]2)代入函数后的语法错误问题[/bo]
我得到[bo] hxfly [/bo]给出的消除HTTP标记的函数代码(见下面):
-----------------------------------------
<%
'去掉所有HTML标记函数
Function cutStr(str)
Dim re
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="<(.[^>]*)>"
str=re.Replace(str,"")
set re=Nothing
Dim l,t,c,i
l=Len(str)
t=0
For i=1 to l
c=Abs(Asc(Mid(str,i,1)))
If c>255 Then
t=t+2 '中文字符
Else
t=t+1 '英文字符
End If
cutStr=str
Next
cutStr=Replace(cutStr,chr(10),"")
cutStr=Replace(cutStr,chr(13),"")
cutStr=Replace(cutStr,chr(32),"")
End Function
%>
-----------------------------------------
将其代入到截取文章的地方,但是运行时出现“语法错误”的提示!
无赖之下将整个搏客文件打包给[bo] hxfly [/bo]查看,[bo] hxfly [/bo]回帖说没有问题。我仔细看了[bo] hxfly [/bo]的回帖,发现她是将上面这个函数放在</body>标签之外来调用的(见以下代码),我也照此方法修改,再也不回出现提示“语法错误”了。
-------------------------------------------
</body>
</html>
<%
'去掉所有HTML标记函数
Function cutStr(str)
Dim re
Set re=new RegExp
re.IgnoreCase =True
re.Global=True
re.Pattern="<(.[^>]*)>"
str=re.Replace(str,"")
set re=Nothing
Dim l,t,c,i
l=Len(str)
t=0
For i=1 to l
c=Abs(Asc(Mid(str,i,1)))
If c>255 Then
t=t+2 '中文字符
Else
t=t+1 '英文字符
End If
cutStr=str
Next
cutStr=Replace(cutStr,chr(10),"")
cutStr=Replace(cutStr,chr(13),"")
cutStr=Replace(cutStr,chr(32),"")
End Function
%>
----------------------------------------------
后来我又测试将该函数放入<head>标签之间,也能正常运行,但是只要放入<body>标签之内,就会立刻出现“程序错误”或者“语法错误”的提示。
[bo]希望遇有此类现象的朋友能够借鉴。一是虚心在这里求教;二是学习帮助者的经验和分析他们变通的方法。[/bo]
补:原ASP文件:
[[it] 本帖最后由 zslj 于 2008-5-2 18:27 编辑 [/it]]
index.rar
(3.29 KB)