因为建站的需要,在布局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