Home > Backend Development > PHP Tutorial > php 怎么把 xE6x88x91 转换成中文

php 怎么把 xE6x88x91 转换成中文

WBOY
Release: 2016-06-23 13:12:50
Original
1895 people have browsed it

刚学php不久,今天突发奇想,想把一个汉字转换成 16 进制的形式,然后再转换成汉字,于是就写了下面的代码

<?php$s = strtoupper(bin2hex('我'));// E68891echo $s;$s2 = null;for($i = 0; $i < strlen($s); $i+=2){    $s2.= '\x'.substr($s, $i, 2);}// \xE6\x88\x91echo $s2;// \xE6\x88\x91echo "$s2"; // 我echo "\xE6\x88\x91";                              
Copy after login

请问各位大神为什么 echo "$s2" 不会自动转成 '我' 字,而直接写 "\xE6\x88\x91" 就可以呢?
如果我得到了一个字符串 '\xE6\x88\x91' , 我要怎么把它转换成中文呢?


回复讨论(解决方案)

echo hex2bin(str_replace('\\x', '', '\xE6\x88\x91'));
Copy after login
Copy after login


显然 \x 是蛇足

echo hex2bin(str_replace('\\x', '', '\xE6\x88\x91'));
Copy after login
Copy after login


显然 \x 是蛇足


非常感谢,以后如果遇到这种情况只要把 \x 去掉,然后使用 hex2bin 函数就可以了啊。

主要是我看到,手册上写的在双引号里面字符可以写成 \x[0-9A-Fa-f]{1,2} 的形式,所以我就想,如果一个字符串是

$s = '\xE6\x88\x91';

那么这样写 echo "$s"; 他就自动转换了,看来是不行啊。

再次感谢!

$s = '\xE6\x88\x91';
$f = create_function('', "return \"$s\";");
echo $f();

eval("echo \"$s\";");

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template