我到网上找了种种算法,转了之后,一般生成的结果都太长,而且seo认为不友好的字符太多(如:%#!+等)

解决方案 »

  1.   

    <?php 
    echo ord(substr("数码相机",0,1));//202
    echo ord(substr("数码相机",1,1));//253echo dechex(202);//ca    
    echo dechex(253);//fd
    echo "\n";echo chr(ord('c')+10);//m
    echo chr(ord('a')+10);//k
    echo chr(ord('f')+10);//p
    echo chr(ord('d')+10);//n
    ?>
      

  2.   

    <?php 
    echo ord(substr("数码相机",2,1));//194
    echo ord(substr("数码相机",3,1));//235echo dechex(194);//c2    
    echo dechex(235);//eb
    echo "\n";echo chr(ord('c')+10);//m
    echo chr(ord('2')+10);//<         数字看来不能直接加10,换种方法
    echo chr(ord('a')+ord('2')-ord('0'));//c
    echo chr(ord('e')+10);//p
    echo chr(ord('b')+10);//n
    echo "\n";echo ord(substr("数码相机",4,1));//207
    echo ord(substr("数码相机",5,1));//207echo dechex(207);//cf    
    echo dechex(224);//e0
    echo "\n";echo chr(ord('c')+10);//m
    echo chr(ord('f')+10);//p
    echo chr(ord('e')+10);//o
    echo chr(ord('a')+ord('0')-ord('0'));//a
    ?>
      

  3.   

    <?php function enc($str){
    $arrReturn=array();
    for($i=0;$i<strlen($str);++$i){
    $a=dechex(ord($str{$i}));
    for($j=0;$j<strlen($a);++$j){
    $char=$a{$j};
    if($char>='a'){//是字母
    $arrReturn[]=chr(ord($char)+10);
    }else{
    //是数字
    //0->a,1->b,2->c ,3->d
    //即chr(ord($char)-ord('0')+ord('a')); //=chr(ord($char)-48+97)
    //=chr(ord($char+49)
    $arrReturn[]=chr(ord($char)+49);
    }
    }
    }
    return implode('',$arrReturn);
    }
    echo enc('数码相机');//mkpnmcolmpoallpk
    exit;
    ?>
      

  4.   

    很感激楼上的,那mkpnmcolmpoallpk =>'数码相机' 的函数改怎么写呢,我是倒不出来啊
      

  5.   

    function dec($str){ 
    $chinese=array();
    for($i=0;$i<strlen($str);$i+=2){
    $arr=array();
    for($j=0;$j<2;$j++){
    $char=$str{$i+$j};
    //107=ord('a')+10
    $arr[]= ord($char)>=107 ? chr(ord($char)-10):chr(ord($char)-49);
    }
    $chinese[]= chr(hexdec($arr[0].$arr[1]));

    return implode('',$chinese);

    echo dec('mkpamcolmpoallpk');//署码相机 
      

  6.   

            function dnc($str)
    {
    $arrReturn=array();
    for($i=0;$i <strlen($str);++$i){
    $OD=ord($str{$i});
    if($OD>106)
    {
    $OD=$OD-10;
    }
    else 
    {
    $OD=$OD-49;
    }
    $OD=chr($OD);
    //echo "{$OD}_";
    //$OD=hexdec($OD); 
    //$OD=chr($OD);
    $arrReturn[]=$OD;
    }
    $rel= implode('',$arrReturn);

    $index=1;
    $arrReturn=array();
    for ($i=0;$i <strlen($rel);++$i)
    {
    $zi.=$rel{$i};
    $index=$i%2;
    if($index==1)
    {
    $zi=str_replace("\\","5",$zi);
    $zi=str_replace("[","4",$zi);
    $zi=str_replace("]","6",$zi);
    $zi=hexdec("ox".$zi);
    $zi=chr($zi); 
    $arrReturn[]=$zi;
    //echo $zi;
    $zi="";
    }
    }
    $rel= implode('',$arrReturn);
    return urldecode($rel);
    }
    这是我写的,不如楼上的高人啊,结帖