本文实例讲述了PHP实现ASCII码与字符串相互转换的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
<?php
class ascii {
/**
* 将ascii码转为字符串
* @param type $str 要解码的字符串
* @param type $prefix 前缀,默认:&#
* @return type
*/
function decode( $str , $prefix = "&#" ) {
$str = str_replace ( $prefix , "" , $str );
$a = explode ( ";" , $str );
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 ;
}
/**
* 将字符串转换为ascii码
* @param type $c 要编码的字符串
* @param type $prefix 前缀,默认:&#
* @return string
*/
function encode( $c , $prefix = "&#" ) {
$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 .= $prefix . $ud . ";" ;
}
return $scill ;
}
}
/*
PHP 转 ASCII
require_once "ascii_class.php";
*/
$aa = new ascii;
echo "<xmp>" ;
echo $str = $aa ->encode( "PHP编程:www.zzvips.com" );
echo "</xmp>" ;
echo $aa ->decode( $str );
?>
|
希望本文所述对大家PHP程序设计有所帮助。