php字符串转Unicode编码, Unicode编码转php字符
百度了很多,都一样, 要么不对, 要不就是只是把字符串的汉字转Unicode
经过多次试验查找, 找到了如下方法,
注意:字符串编码必须是utf-8,如果不是自行用icon转一下
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
|
//字符串转Unicode编码
$strArr = preg_split( '/(?<!^)(?!$)/u' , $strLong ); //拆分字符串为数组(含中文字符)
$resUnicode = '' ;
foreach ( $strArr as $str )
{
$bin_str = '' ;
$arr = is_array ( $str ) ? $str : str_split ( $str ); //获取字符内部数组表示,此时$arr应类似array(228, 189, 160)
foreach ( $arr as $value )
{
$bin_str .= decbin (ord( $value )); //转成数字再转成二进制字符串,$bin_str应类似111001001011110110100000,如果是汉字"你"
}
$bin_str = preg_replace( '/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/' , '$1$2$3' , $bin_str ); //正则截取, $bin_str应类似0100111101100000,如果是汉字"你"
$unicode = dechex ( bindec ( $bin_str )); //返回unicode十六进制
$_sup = '' ;
for ( $i = 0; $i < 4 - strlen ( $unicode ); $i ++)
{
$_sup .= '0' ; //补位高字节 0
}
$str = '\\u' . $_sup . $unicode ; //加上 \u 返回
$resUnicode .= $str ;
}
return $resUnicode ;
}
//Unicode编码转字符串方法1
function unicode_decode( $name )
{
// 转换编码,将Unicode编码转换成可以浏览的utf-8编码
$pattern = '/([\w]+)|(\\\u([\w]{4}))/i' ;
preg_match_all( $pattern , $name , $matches );
if (! empty ( $matches ))
{
$name = '' ;
for ( $j = 0; $j < count ( $matches [0]); $j ++)
{
$str = $matches [0][ $j ];
if ( strpos ( $str , '\\u' ) === 0)
{
$code = base_convert ( substr ( $str , 2, 2), 16, 10);
$code2 = base_convert ( substr ( $str , 4), 16, 10);
$c = chr ( $code ). chr ( $code2 );
$c = iconv( 'UCS-2' , 'UTF-8' , $c );
$name .= $c ;
}
else
{
$name .= $str ;
}
}
}
return $name ;
}
//Unicode编码转字符串
function unicode_decode2( $str ){
$json = '{"str":"' . $str . '"}' ;
$arr = json_decode( $json , true);
if ( empty ( $arr )) return '' ;
return $arr [ 'str' ];
}
echo unicode_encode( '若水小站:qq963087326' ), '<br>' ;
//结果\u82e5\u6c34\u5c0f\u7ad9\u003a\u0071\u0071\u0039\u0036\u0033\u0030\u0038\u0037\u0033\u0032\u0036
echo unicode_decode( '\u82e5\u6c34\u5c0f\u7ad9\u003a\u0071\u0071\u0039\u0036\u0033\u0030\u0038\u0037\u0033\u0032\u0036' );
//结果若水小站:qq963087326
|
总结
到此这篇关于php unicode编码和字符串互转的方法的文章就介绍到这了,更多相关php unicode编码和字符串互转内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!