PHP: '求字符串长度。汉字算两个字符,英文算一个字符。 Function strLength(str) If isNull(str) Or Str = "" Then StrLength = 0 Exit Function End If Dim WINNT_CHINESE WINNT_CHINESE=(len("例子")=2) If WINNT_CHINESE Then Dim l,t,c Dim i l=len(str) t=l For i=1 To l c=asc(mid(str,i,1)) If c<0 Then c=c+65536 If c>255 Then t=t+1 Next strLength=t Else strLength=len(str) End If End Function
我常用的: 代码: '-------------------------------------------------------------------------------- Function GetStrLen(str) '-------------------------------------------------------------------------------- '-------------------------------------------------------------------------------- If IsNull(str) Or str = "" Then getStrLen = 0 Else Dim i, n, k, chrA k = 0 n = Len(str) For i = 1 To n chrA = Mid(str, i, 1) If Asc(chrA) >= 0 And Asc(chrA) <= 255 Then k = k + 1 Else k = k + 2 End If Next getStrLen = k End If End Function 原来差不多,不过这个只是将 0-255 之间的认定为单字节字符。 另,常用来截取标题的函数: 代码: '-------------------------------------------------------------------------------- Function GetStrValue(ByVal str, ByVal i, ByVal str_2) '-------------------------------------------------------------------------------- '-------------------------------------------------------------------------------- If getStrLen(str) <= i Then getStrValue = str Else Dim j, n, k, chrA j = i - getStrLen(str_2) n = 0 k = 0 Do While n < j k = k + 1 chrA = Mid(str, k, 1) If Asc(chrA) < 0 Or Asc(chrA) > 255 Then n = n + 2 If n > j Then k = k - 1 Else n = n + 1 End If Loop getStrValue = Left(Trim(str), k) & str_2 End If End Function 其中 str 是字符串,i 是需要的字节数(英文算一个,中文算两个),str_2 是用来作为省略标记的字符,例如“...”或者“…”。