浅析PHP的ASCII码转换类

时间:2023-09-08 02:54:28 


class ascii
{
function decode($str)
{
    preg_match_all( "/(d{2,5})/", $str,$a);
    $a = $a[0];
    foreach ($a as $dec)
    {
        if ($dec < 128)
        {
            $utf .= chr($dec);
        }
        else if ($dec < 2048)
       {
            $utf .= chr(192 + (($dec - ($dec % 64)) / 64));
            $utf .= chr(128 + ($dec % 64));
        }
        else
        {
            $utf .= chr(224 + (($dec - ($dec % 4096)) / 4096));
            $utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
            $utf .= chr(128 + ($dec % 64));
        }
    }
    return $utf;
}
function encode($c)
{
    $len = strlen($c);
    $a = 0;
    while ($a < $len)
    {
        $ud = 0;
        if (ord($c{$a}) >=0 && ord($c{$a})< =127)
        {
            $ud = ord($c{$a});
            $a += 1;
        }
        else if (ord($c{$a}) >=192 && ord($c{$a})< =223)
        {
            $ud = (ord($c{$a})-192)*64 + (ord($c{$a+1})-128);
            $a += 2;
        }
        else if (ord($c{$a}) >=224 && ord($c{$a})< =239)
        {
            $ud = (ord($c{$a})-224)*4096 + (ord($c{$a+1})-128)*64 + (ord($c{$a+2})-128);
            $a += 3;
        }
        else if (ord($c{$a}) >=240 && ord($c{$a})< =247)
        {
            $ud = (ord($c{$a})-240)*262144 + (ord($c{$a+1})-128)*4096 + (ord($c{$a+2})-128)*64 + (ord($c{$a+3})-128);
            $a += 4;
        }
        else if (ord($c{$a}) >=248 && ord($c{$a})< =251)
        {
            $ud = (ord($c{$a})-248)*16777216 + (ord($c{$a+1})-128)*262144 + (ord($c{$a+2})-128)*4096 + (ord($c{$a+3})-128)*64 + (ord($c{$a+4})-128);
            $a += 5;
        }
        else if (ord($c{$a}) >=252 && ord($c{$a})< =253)
        {
            $ud = (ord($c{$a})-252)*1073741824 + (ord($c{$a+1})-128)*16777216 + (ord($c{$a+2})-128)*262144 + (ord($c{$a+3})-128)*4096 + (ord($c{$a+4})-128)*64 + (ord($c{$a+5})-128);
            $a += 6;
        }
        else if (ord($c{$a}) >=254 && ord($c{$a})< =255)
        { //error
            $ud = false;
        }
        $scill .= "&#$ud;";
    }
    return $scill;
}
标签:PHP,ASCII码
0
投稿

猜你喜欢

  • JS实现选择TextArea内文本的方法

    2024-04-16 10:40:02
  • 给自定义对象加上自定义事件的支持的教程

    2023-10-14 20:49:00
  • 在JScript中使用ADODB.Stream判断文件编码

    2008-06-08 13:03:00
  • pyinstaller通过spec文件打包py程序的步骤

    2021-02-05 01:49:57
  • SQL Server数据库对上亿表的操作

    2008-11-16 18:13:00
  • Vue 实例中使用$refs的注意事项

    2024-05-02 16:36:01
  • 解决idea git切换多个分支后maven不生效的问题

    2023-06-28 17:48:13
  • Python基于列表list实现的CRUD操作功能示例

    2022-06-15 16:02:14
  • python人工智能自定义求导tf_diffs详解

    2023-06-11 13:31:51
  • Vue生命周期示例详解

    2024-04-28 09:25:46
  • Go语言JSON解析器gjson使用方法详解

    2024-02-10 20:11:08
  • Python采集王者最低战力信息实战示例

    2021-09-29 17:54:13
  • 详解Vue内部怎样处理props选项的多种写法

    2024-05-03 15:10:39
  • 从mysql到oracle你必须了解的50件事儿

    2010-08-05 14:36:00
  • Python下使用Scrapy爬取网页内容的实例

    2022-05-29 13:43:24
  • 基于python实现从尾到头打印链表

    2023-07-02 21:24:34
  • Python 居然可以在 Excel 中画画你知道吗

    2023-09-14 23:13:06
  • 停止事件冒泡和阻止浏览器默认行为的脚本

    2008-09-09 22:09:00
  • 轻轻松松学习JavaScript

    2024-06-07 15:51:08
  • Python批量裁剪图片的思路详解

    2023-05-11 03:55:59
  • asp之家 网络编程 m.aspxhome.com