求一个编码后没有大写字母的编码,比如将这个URL进行编码或加密  http://www.google.com/ERD0230/dfeeDDD 要求编码或加密后的代码不能有大写字母,并且是可逆日,应该怎样处理,感慨不尽

解决方案 »

  1.   

    ASCII码值,0-255,映射到需要的字符集{……}字符集基数<256,则用多位表示即可,只要字符集>=2都可以做到
      

  2.   

    比较简单的写法echo $s = 'http://www.google.com/ERD0230/dfeeDDD', PHP_EOL;
    echo $m = current(unpack('H*', $s)), PHP_EOL;
    echo pack('H*', $m), PHP_EOL;
      

  3.   

    一个思路,用\a表示A
    http://www.google.com/ERD0230/dfeeDDD 就变成了 http://www.google.com/\e\r\d0230/dfee\d\d\d
    编码的思路很简单吧,就是把大写字母变成小写,然后在之前加上一个反斜杠。
    反编码就是检查每个字线前面是否有反斜杠,有的话去掉前面的反斜杠,再转成大写。这样可以吧。
      

  4.   


    版主不是给答案了吗?
    如果按我#2说的,字符集恰好为16,这两个答案是一样的echo $s = 'http://www.google.com/ERD0230/dfeeDDD', PHP_EOL;
    echo $m = current(unpack('H*', $s)), PHP_EOL;
    ////////////////////////////////////////////////////////////
    $res = "";
    for($i=0,$n=strlen($s);$i<$n;$i++)
    {
    $res .= str_pad(dechex(ord($s{$i})), 2, "0", STR_PAD_LEFT);
    }
    echo $res;
      

  5.   

    <?php
    function encrypt($plainText)
    {
        return strtr(bin2hex($plainText), '0123456789abcdef', 'abcdefghijklmnop');
    }function decrypt($encryptedText)
    {
        return pack("H*", (strtr($encryptedText, 'abcdefghijklmnop', '0123456789abcdef')));
    }$url = encrypt('http://www.google.com/ERD0230/dfeeDDD');
    echo $url . '<br>';
    echo decrypt($url);
    ?>
      

  6.   

    urlencode一下不就行了?