用geshi+ajax实现代码高亮--实现篇

首先,需要下载geshi,在http://qbnz.com/highlighter/,下载后解压上传到合适的位置(我的放在common目录里面,位置随意放,但要记住)。
其次,新增2个文件:(都位于common目录下,如果前面的geshi放到位置不一样,注意code.php的的include路径)
1、code.php--实现接收代码,用geshi处理并返回结果

parse_code();

?>

2、HiLightCode.asp--放入ajax代码,实现传送代码并回显代码处理结果(全是javascript代码)




最后,改动3个文件:
1、在ubbcode.asp中增加(大约位于259行左右)

re.Pattern = "\[code=(.[^\]]*)\](.*?)\[\/code\]"
Set strMatchs = re.Execute(strContent)
For Each strMatch in strMatchs
Dim lang,code,rnd_ID,rndID_t,rndID_c,Code_hi,Code_nm
lang=strMatch.SubMatches(0)
code=strMatch.SubMatches(1)
Randomize
rnd_ID = Int(100000 * Rnd)
rndID_t = "Type"& rnd_ID
rndID_c	=	"Code"& rnd_ID
Code_hi="

显示: 高亮"
Code_nm=" | 普通
" strContent = Replace(strContent,strMatch.Value,"
"""〈&""〈&" 代码

"&Code_hi & Code_nm &"

"&code&"
") NEXT

2、在pj根目录下的article.asp和default.asp文件中加入文件引用(加在最后的footer.asp前,否则会引起IE下边栏显示问题)

  
  

使用很简单,跟以前添加代码一样,只需注明代码类型就可以了,例如:
[code=asp][/code]

这只是粗略实现这个效果,具体可能有些地方还有待改进
HiLightCode.asp、ubbcode.asp、code.php三个文件打包下载
点击下载此文件

用ajax+geshi为pjblog实现代码高亮

一直想找个代码高亮的插件,都不是很满意。对于代码的着色方案,比较满意geshi,只不过是php的,用在pjblog上不是很方便。不过办法是有的,那就是用ajax实现。
原计划是用geshi通过ajax在生成缓存的时候,把代码着色。这样的话数据库里面存储的是原始代码,缓存文件里面的是着色后的代码,用UBB编辑器修改起来也方便,不过这种想法没有实现。后来就想,纯粹的用ajax实现代码着色。在生成缓存的过程中加入几个javascript代码,然后实现无刷新进行代码着色。
原始显示:
920081112221652.jpg
高亮显示:
v20081112221951.jpg

asp数组操作

'数组的定义
Dim MyArray
MyArray = Array(1‚5‚123‚12‚98)

'可扩展数组
Dim MyArray()
for i = 0 to 10
ReDim Preserve MyArray(i)
MyArray(i)=i
next

'将一个字符串分割并返回分割结果的数组
Dim MyArray
MyArray = Split(tempcnt‚chr(13)&chr(10))
For I = Lbound(MyArray) to Ubound(MyArray)
Response.Write MyArray(I) & "
"
Next

'数组排序函数
function..Sort(ary)
KeepChecking = TRUE
Do Until KeepChecking = FALSE
KeepChecking = FALSE
For I = 0 to UBound(ary)
If I = UBound(ary) Then Exit For
If ary(I) > ary(I+1) Then
FirstValue = ary(I)
SecondValue = ary(I+1)
ary(I) = SecondValue
ary(I+1) = FirstValue
KeepChecking = TRUE
End If
Next
Loop
Sort = ary
End function..

'数组排序函数应用例子
Dim MyArray
MyArray = Array(1‚5‚123‚12‚98)
MyArray = Sort(MyArray)
For I = Lbound(MyArray) to Ubound(MyArray)
Response.Write MyArray(I) & "
"
Next

'在Application和Session中使用数组
Application.Lock
Application("StoredArray") = MyArray
Application.Unlock

LocalArray = Application("StoredArray")

'覆盖Application中的数组
Application.Lock
Application("StoredArray") = LocalArray
Application.Unlock

'Session使用方法与Application相同

'从数据库中把数据导入数组中
'Dim MyArray
'取出全部记录
'MyArray = RS.GetRows
'取出前10项记录
'MyArray = RS.GetRows(10)

For row = 0 To UBound(MyArray‚ 2)
For col = 0 To UBound(MyArray‚ 1)
Response.Write (col‚ row) & "
"
Next
Next

asp 数组小结说明:
1. dim不能用作不确定长度 不定长数组可用redim定义
redim可以,可以设一个变量[但是使用前必须传给改变量一个整数]
例:Cnt=12 [传值可用CInt转换CInt(request.form("num"))]
redim MyArray(Cnt)
2.preserve 保留原值
例:redim a(10)
1----> redim a(20) '这样的话原来a(10)中的所有内容清空
2----> redim preserve a(20) '这样的话原来的a(10)中的内容保留
3.数组个数
在以DIM或REDIM定义数组时指定的下标,表示的是访问该数组时所容许的最大下标,却不是该数组的个数。实际上,一维数组个数总是等于(最大下标+1),访问时是通过下标从0开始逐个访问的。
例:Dim myarray(5) 定义的数组元素有6个,分别是:myarray(0)、myarray(1)、myarray(2)、myarray(3)、myarray(4)、myarray(5)。
4.关于UBOUND函数
UBOUND返回的是一维数组的最大下标,而不是元素个数。 比如:Dim Myarray(5),那么UBOUND(Myarray)返回的值是5,而不是6。 ubound也可以应用于二维数组。应用于二维数组时,它返回的是第一个下标的最大值。

例:Dim Myarray(6,3)

那么UBOUND(Myarray)返回的值是6,而不是7,更不是18(6*3=18)。

求阶乘

# -*- coding: cp936 -*-
import jiecheng num=raw_input("要求阶乘,请输入一个整数:")
num=int(num)
b=jiecheng.jiecheng(num) print "%d!= %d"%(num,b)