php版本的charCodeAt()函数
作者:matrix 被围观: 7,651 次 发布时间:2014-03-29 分类:兼容并蓄 零零星星 | 17 条评论 »
这是一个创建于 3890 天前的主题,其中的信息可能已经有所发展或是发生改变。
charCodeAt()函数方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
JavaScript里经常看到charCodeAt函数但有些时候需要转换为php,这下就哦豁了。php里没有这玩意~ 自己写又搞不来。
还好,网上有一大把的代码:
function get_bianma($str)//等同于js的charCodeAt()
{
$result = array();
for($i = 0, $l = mb_strlen($str, 'utf-8');$i < $l;++$i)
{
$result[] = uniord(mb_substr($str, $i, 1, 'utf-8'));
}
return join(",", $result);
}
function uniord($str, $from_encoding = false)
{
$from_encoding = $from_encoding ? $from_encoding : 'UTF-8';
if (strlen($str) == 1)
return ord($str);
$str = mb_convert_encoding($str, 'UCS-4BE', $from_encoding);
$tmp = unpack('N', $str);
return $tmp[1];
}
说明:
get_bianma(substr($f, $e, 1))等同于js代码$f.charCodeAt($e)
表示获取$f中的第$e个位置的字符的 Unicode 编码
大佬,我前端是gbk用charCodeAt(a).toString(16)转为十六进制,然后用你的代码反转不出来原来的中文,这是咋回事。
文章里面的函数是编码的。解码可以用mb_chr处理
mb_chr还是解不了,出来是的空白。
exit(mb_chr(6211, 'gbk')); //6211是前端gbk编码的【我】字,js charCodeAt(a).toString(16)
不清楚前端gbk编码的
```php
var_dump( mb_chr(hexdec(6211) , 'utf-8') );// string(3) "我"
````
这是想要的结果?
对,是这样,原来要把16进制转成10进制才行的吗
系统默认读取10进制数字,除非你显示申明
0x6211 就表示你输入的是16进制数
ok,明白了,感谢。 😀
难道前端charCodeAt(a).toString(16);编码,只有在前端才能解码,后端PHP解不了前端的么??纳闷。
背景主题很可爱啊
正在学PHP。博主有什么好的教程可以推荐的吗?
这个教程不错 http://pan.baidu.com/s/1dDtcwnv
不过我还没看
不错哦 顶一个
😡 对代码什么的最无力了,脑洞太大,看不懂。。。。
先了解点基本语法 后面就慢慢懂了
😯
最近在研究网络小说 😛
应该很来钱吧 😀