当前位置:首页>百宝箱>正文

php Hex编码与解码,字符串和十六进制,可用于url上

发布时间:2018-05-07 22:46:18 作者:小超越君

因为建站的需要,在布局url链接的时候发现中文url不好处理,虽然现在百度是支持中文url的,但如果短的还好,如果是长长得文字就不好说了,而且看起来特别扭和不美观,
权衡再三,还是决定对中文的url进行处理了,之前想过比如MD5、base64这种的,但是总感觉都不完美。后来发现hex还不错,而且阿里巴巴也是使用这种方式的,所以在seo和大数据处理方面肯定是不错的选择。
但是,因为网上的资料并不多,尤其是php的,小超越可是折腾了好久,才有下面的代码,要是你不经意间找到这篇技术文章,解决了你的困惑,可别忘了给小超越加个鸡腿!
其实通俗来讲就是字符串和十六进制互转摆了。

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
<?php

//下面是通过gb2312的方式,因为这样的方式比较短。
function String2Hex($string){
    $hex='';
    for ($i=0; $i < strlen($string); $i++){
        $hex .= dechex(ord($string[$i]));
    }
    return $hex;
}

function Hex2String($hex){
    $string='';
    for ($i=0; $i < strlen($hex)-1; $i+=2){
        $string .= chr(hexdec($hex[$i].$hex[$i+1]));
    }
    return $string;
}
echo $string;

$outce = mb_convert_encoding("小超越工作室",'gb2312','utf-8');
$hex = String2Hex($outce); //编码
echo strtoupper($hex);//大写转换并输出
$hex = Hex2String('D0A1B3ACD4BDB9A4D7F7CAD2'); //解码
echo mb_convert_encoding($hex,'utf-8','gb2312'); //转成urf8编码输出

?>

还有更简洁的一种方法:

1
2
3
4
5
6
<?php
$str = "小超越工作室";
$hex = bin2hex($str); //加密
echo $hex . "<br>";
echo pack("H*",$hex) . "<br>"; //解密
?>

文章内容欢迎转载,请保留本文链接:https://www.zhe94.com/132.html

专注高端湛江网站建设及湛江SEO优化服务 立即咨询