求助 php 怎么把 \xE6\x88\x91 转换成中文

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

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

请问各位大神为什么 echo "$s2" 不会自动转成 '我' 字,而直接写 "\xE6\x88\x91" 就可以呢?
如果我得到了一个字符串 '\xE6\x88\x91' , 我要怎么把它转换成中文呢?
...全文
1499 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-03-28
  • 打赏
  • 举报
回复
$s = '\xE6\x88\x91'; $f = create_function('', "return \"$s\";"); echo $f(); eval("echo \"$s\";");
www_yangyawei_com 2016-03-28
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
echo hex2bin(str_replace('\\x', '', '\xE6\x88\x91'));
我 显然 \x 是蛇足
非常感谢,以后如果遇到这种情况只要把 \x 去掉,然后使用 hex2bin 函数就可以了啊。 主要是我看到,手册上写的在双引号里面字符可以写成 \x[0-9A-Fa-f]{1,2} 的形式,所以我就想,如果一个字符串是 $s = '\xE6\x88\x91'; 那么这样写 echo "$s"; 他就自动转换了,看来是不行啊。 再次感谢!
xuzuning 2016-03-28
  • 打赏
  • 举报
回复
echo hex2bin(str_replace('\\x', '', '\xE6\x88\x91'));
我 显然 \x 是蛇足

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧