php中asc码与字符互转
作者:admin 日期:2010-07-30
以前花了不少时间,找可以把中文转ascii码的php代码,utf-8也只是ascii的一种。后来中手册上找到了个,把他改为了批量转换,还增加了一个常用的ascii代码还原字符。这个代码写好了有一段时间了,没什么时间把这些贴出来,大家可以看看,这个类不止只是中文的转换哟
<?php
class ascii
{
function decode($str)
{
preg_match_all( "/(d{2,5})/", $str,$a);
$a = $a[0];
foreach ($a as $dec)
{
if ($dec < 128)
{
$utf .= chr($dec);
}
else if ($dec < 2048)
{
$utf .= chr(192 + (($dec - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
}
else
{
$utf .= chr(224 + (($dec - ($dec % 4096)) / 4096));
$utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
}
}
return $utf;
}
function encode($c)
{
$len = strlen($c);
$a = 0;
while ($a < $len)
{
$ud = 0;
if (ord($c{$a}) >=0 && ord($c{$a})<=127)
{
$ud = ord($c{$a});
$a += 1;
}
else if (ord($c{$a}) >=192 && ord($c{$a})<=223)
{
$ud = (ord($c{$a})-192)*64 + (ord($c{$a+1})-128);
$a += 2;
}
else if (ord($c{$a}) >=224 && ord($c{$a})<=239)
{
$ud = (ord($c{$a})-224)*4096 + (ord($c{$a+1})-128)*64 + (ord($c{$a+2})-128);
$a += 3;
}
else if (ord($c{$a}) >=240 && ord($c{$a})<=247)
{
$ud = (ord($c{$a})-240)*262144 + (ord($c{$a+1})-128)*4096 + (ord($c{$a+2})-128)*64 + (ord($c{$a+3})-128);
$a += 4;
}
else if (ord($c{$a}) >=248 && ord($c{$a})<=251)
{
$ud = (ord($c{$a})-248)*16777216 + (ord($c{$a+1})-128)*262144 + (ord($c{$a+2})-128)*4096 + (ord($c{$a+3})-128)*64 + (ord($c{$a+4})-128);
$a += 5;
}
else if (ord($c{$a}) >=252 && ord($c{$a})<=253)
{
$ud = (ord($c{$a})-252)*1073741824 + (ord($c{$a+1})-128)*16777216 + (ord($c{$a+2})-128)*262144 + (ord($c{$a+3})-128)*4096 + (ord($c{$a+4})-128)*64 + (ord($c{$a+5})-128);
$a += 6;
}
else if (ord($c{$a}) >=254 && ord($c{$a})<=255)
{ //error
$ud = false;
}
$scill .= "&#$ud;";
}
return $scill;
}
最近在技术群中有位兄弟提出了一个问题:
Javascript生成随机整数
作者:admin 日期:2010-07-27
VB实现不占用CPU的延时
作者:admin 日期:2010-07-23
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Delay(ByVal t As Long)
Dim BeginTime As Long
BeginTime = timeGetTime
While timeGetTime < BeginTime + t
DoEvents
Sleep 1
Wend
End Sub
Private Sub Command1_Click()
Call Delay(5000)
MsgBox ("Hello world!")
End Sub
win2003系统无法连接数码相机的解决办法
作者:admin 日期:2010-07-19
fopen() 函数用于在 PHP 中打开文件
作者:admin 日期:2010-07-07
打开文件
fopen() 函数用于在 PHP 中打开文件。
此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件:
文件可能通过下列模式来打开:
模式 | 描述 |
r | 只读。在文件的开头开始。 |
r+ | 读/写。在文件的开头开始。 |
w | 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
w+ | 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。 |
a | 追加。打开并向文件文件的末端进行写操作,如果文件不存在,则创建新文件。 |
a+ | 读/追加。通过向文件末端写内容,来保持文件内容。 |
x | 只写。创建新文件。如果文件以存在,则返回 FALSE。 |
x+ |
读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。 |
asp 支持中文的len函数、left函数、right函数
作者:admin 日期:2010-07-06
left() 函数是 VBScript 的函数,VBScript 将1个汉字看作1个字符,因此用 left()不能得到正确的字符长度。
以下3个函数,用来取代 len()、left()、right(),希望能解决您的问题。
'--------------------------------------------------------
'Name: lenX
'Argument: uStr
'Return:
'Description: 返回字符串的长度,1个中文字符长度为2
'--------------------------------------------------------
function lenX(byval uStr)
dim theLen,x,testuStr
theLen = 0
for x = 1 to len(uStr)
testuStr = mid(uStr,x,1)
if asc(testuStr) < 0 then
theLen = theLen + 2
else
theLen = theLen + 1
end if
next
lenX = theLen
end function
'--------------------------------------------------------
'Name: leftX
'Argument: uStr 待处理的字符串
' uLen 要截取的长度
'Return:
'Description: 返回指定长度的字符串,1个中文字符长度为2
'--------------------------------------------------------
function leftX(byval uStr,byval uLen)
dim i,j,uTestStr,theStr
leftX = ""
j = 0
for i = 1 to len(uStr)
uTestStr= mid(uStr,i,1)
theStr = theStr & uTestStr
if asc(uTestStr) < 0 then
j = j + 2
else
j = j + 1
end if
if j >= uLen then exit for
next
leftX = theStr
end function
'--------------------------------------------------------
'Name: rightX
'Argument: uStr 待处理的字符串
' uLen 要截取的长度
'Return:
'Description: 返回指定长度的字符串,1个中文字符长度为2
'--------------------------------------------------------
function rightX(byval uStr,byval uLen)
dim i,j,uTestStr
rightX = ""
j = 0
for i = len(uStr) to 1 step -1
uTestStr = mid(uStr,i,1)
rightX = rightX & uTestStr
if asc(uTestStr) < 0 then
j = j + 2
else
j = j + 1
end if
if j >= uLen then exit for
next
end function
淘宝热门商品关键字提取器
作者:admin 日期:2010-07-06
2009年世界网民数量TOP20排行榜
作者:admin 日期:2010-07-05
世界网民数量TOP20排行榜 | |||||
---|---|---|---|---|---|
# |
国家名称 |
人口 |
网民数 |
人口比率 |
全球比率 |
1 |
1,338,612,968 |
360,000,000 |
26.9 % |
20.8 % |
|
2 |
307,212,123 |
227,719,000 |
74.1 % |
13.1 % |
|
3 |
127,078,679 |
95,979,000 |
75,5 % |
5.5 % |
|
4 |
1,156,897,766 |
81,000,000 |
7.0 % |
4.7 % |
|
5 |
198,739,269 |
67,510,400 |
34.0 % |
3.9 % |
|
6 |
82,329,758 |
54,229,325 |
65.9 % |
3.1 % |
|
7 |
61,113,205 |
46,683,900 |
76.4 % |
2.7 % |
|
8 |
140,041,247 |
45,250,000 |
32.3 % |
2.6 % |
|
9 |
62,150,775 |
43,100,134 |
69.3 % |
2.5 % |
|
10 |
48,508,972 |
37,475,800 |
77.3 % |
2.2 % |
|
11 |
66,429,284 |
32,200,000 |
48.5 % |
1.9 % |
|
12 |
58,126,212 |
30,026,400 |
51.7 % |
1.7 % |
|
13 |
240,271,522 |
30,000,000 |
12.5 % |
1.7 % |
|
14 |
40,525,002 |
29,093,984 |
71.8 % |
1.7 % |
|
15 |
111,211,789 |
27,600,000 |
24.8 % |
1.6 % |
|
16 |
76,805,524 |
26,500,000 |
34.5 % |
1.5 % |
|
17 |
33,487,208 |
25,086,000 |
74.9 % |
1.4 % |
|
18 |
97,976,603 |
24,000,000 |
24.5 % |
1.4 % |
|
19 |
88,576,758 |
21,963,117 |
24.8 % |
1.3 % |
|
20 |
38,482,919 |
20,020,362 |
52.0 % |
1.2 % |
|
TOP 20 Countries |
4,374,577,583 |
1,325,437,422 |
30.3 % |
76.4 % |
|
Rest of the World |
2,393,227,625 |
408,556,319 |
17.1 % |
23.6 % |
|
Total World - Users |
6,767,805,208 |
1,733,993,741 |
25.6 % |
100.0 % |
经典PHP文件操作函数及实例介绍
作者:admin 日期:2010-07-04
广告位