对于包含汉字的URL,目前我是用urlencode处理,但是发现太长了,而且%xx的形式很难看……如何将汉字转为只有字母或数字?类似smarter。com。cn那样,搜“小米手机”,url转换成了“nakbmdnhmkngllpk”。

解决方案 »

  1.   


    他可能还觉得长....5bCP57Gz5omL5py6
    把常用的关键词做一个映射表,自己用自己的算法传递参数从映射表里取完整的
      

  2.   


    我是觉得不够好:-)1、base64_encode()出来是大小写相混的,用于URL不太好,我希望它是全小写的。
    2、直接用它的话会把英文和数字也加密了。
      

  3.   

    哈哈,还是给我搜索到了这篇。http://topic.csdn.net/u/20090323/12/33afe038-8725-4084-ac0a-a6a1c4e24c57.html,同一个问题。问题是对于数字和字母不加密还是不会处理:-(
      

  4.   

    这是将内码以半字节为单位转换成字符的过程
    echo $t = encode('小米手机'); //nakbmdnhmkngllpk
    echo PHP_EOL;
    echo decode($t); //小米手机
    echo PHP_EOL;function encode($s) {
      $offs = ord('a');
      $s = current(unpack('H*', $s));
      $r = '';
      for($i=0; $i<strlen($s); $i++)
        $r .= chr(hexdec($s{$i}) + $offs);
      return $r;
    }function decode($s) {
      $offs = ord('a');
      $r = '';
      for($i=0; $i<strlen($s); $i++)
        $r .= dechex(ord($s{$i}) - $offs);
      return pack('H*', $r);
    }如果不对数字和字母处理,则需要先明确汉字的编码类型,否则冗余的代码太多不利于提高效率
      

  5.   


    以前我也是这么认为的,所以才保留了汉字的形式。现在发现这样并不好:首先,不同的浏览器有些传值是utf-8而有些不是。其次,URL上的汉字即使能提升页面的相关度,对搜索引擎友好,作用也是微乎其微。但是这种形式的URL大大妨碍了搜索引擎的抓取和收录(特指百度)。我同样的一个网站,全英文的URL收录远高于包含汉字的URL,大致是80/20,可网站的两种URL数量却是相反。
      

  6.   


    霍霍,你这比我昨晚找到的那贴子的代码还要简洁。汉字编码倒是好明确,用gb2312比utf-8要短。能说说数字和字母怎么分离处理呢?