PHP与JS实现ASCII码与字符串互转的方法
- A
ASCII码与字符串互转,使用Javascript来实现是十分简单的
"快".charCodeAt(0); String.fromCharCode(24555);
但在PHP上,因为没有对应的函数,需要我们自己做逻辑,实现就稍微复杂一些,下面是代码:
<?php class Ascii { private $prefix = "&#"; public function str2ascii($str) { $len = strlen($str); $i = 0; $iscii = ''; while ($i < $len) { $ud = 0; if (ord($str{$i}) >= 0 && ord($str{$i}) <= 127) { $ud = ord($str{$i}); $i += 1; } else if (ord($str{$i}) >= 192 && ord($str{$i}) <= 223) { $ud = (ord($str{$i}) - 192) * 64 + (ord($str{$i + 1}) - 128); $i += 2; } else if (ord($str{$i}) >= 224 && ord($str{$i}) <= 239) { $ud = (ord($str{$i}) - 224) * 4096 + (ord($str{$i + 1}) - 128) * 64 + (ord($str{$i + 2}) - 128); $i += 3; } else if (ord($str{$i}) >= 240 && ord($str{$i}) <= 247) { $ud = (ord($str{$i}) - 240) * 262144 + (ord($str{$i + 1}) - 128) * 4096 + (ord($str{$i + 2}) - 128) * 64 + (ord($str{$i + 3}) - 128); $i += 4; } else if (ord($str{$i}) >= 248 && ord($str{$i}) <= 251) { $ud = (ord($str{$i}) - 248) * 16777216 + (ord($str{$i + 1}) - 128) * 262144 + (ord($str{$i + 2}) - 128) * 4096 + (ord($str{$i + 3}) - 128) * 64 + (ord($str{$i + 4}) - 128); $i += 5; } else if (ord($str{$i}) >= 252 && ord($str{$i}) <= 253) { $ud = (ord($str{$i}) - 252) * 1073741824 + (ord($str{$i + 1}) - 128) * 16777216 + (ord($str{$i + 2}) - 128) * 262144 + (ord($str{$i + 3}) - 128) * 4096 + (ord($str{$i + 4}) - 128) * 64 + (ord($str{$i + 5}) - 128); $i += 6; } else if (ord($str{$i}) >= 254 && ord($str{$i}) <= 255) { $ud = false; } $iscii .= $this->prefix . $ud . ";"; } return $iscii; } public function ascii2str($iscii) { $iscii = str_replace($this->prefix, "", $iscii); $isciis = explode(";", $iscii); $str = ''; foreach ($isciis as $iscii) { if ($iscii < 128) { $str .= chr($iscii); } else if ($iscii < 2048) { $str .= chr(192 + (($iscii - ($iscii % 64)) / 64)); $str .= chr(128 + ($iscii % 64)); } else { $str .= chr(224 + (($iscii - ($iscii % 4096)) / 4096)); $str .= chr(128 + ((($iscii % 4096) - ($iscii % 64)) / 64)); $str .= chr(128 + ($iscii % 64)); } } return $str; } }
傲世》原创,转载请保留文章出处。
本文链接:https://www.recho.cn/170.html
如您对本文章内容有所疑问、反馈或补充,欢迎通过邮箱:admin@h2fast.cn 联系我们!
版权声明:若无特殊注明,本文为《正文到此结束