2016-11-04 125 views
-3

我的问题是,我有几个参数像php如何将一个字符串缩短?

mydomain.com/page.php?id=xe455144s&t=nameofpage&s=yt 

的URL现在我想要的网址,这部分转化 -

page.php?id=xe455144s&t=nameofpage&s=yt 

成短/编码器和单线网址像

mydomain.com/kid55e4s554e4s5 [this is what i imagined] 

我知道如何使用.htaccess进行url重写,但是我不知道如何制作url的短数字或字母数字字符串。

我需要将其转换回普通字符串以检索url的值。

我知道base64_encode/decode,但这个功能使得巨大的网址,我需要一个简短的。

在php库中是否有任何函数存在?

目的 - 我要让短网址为我的网站的搜索引擎优化的目的,还需要设置几个参数到应该从每个人

请帮助隐藏这些网址,

+0

那是什么目的?我没有得到你......你在说网址缩短吗? –

+0

我想为我的网站制作seo用途的简短网址,并且还希望将几个参数设置到应该从所有人隐藏的网址中。 @bob – Kapil

+0

这是否意味着_kid55e4s554e4s5_可能是其他任何东西?就像_magicxyz_? –

回答

0

可以使用的base64编码以URL格式WIKI Base64 RFC4648

例如:

class Base64Url 
{ 
    /** 
    * It`s base64_encode, but used 
    * - instead + 
    * _ instead/
    * and it does not contain = 
    * 
    * @param string $input 
    * @return string 
    */ 
    public static function encode($input) 
    { 
     $str = strtr(base64_encode($input), '+/', '-_'); 
     $str = str_replace('=', '', $str); 

     return $str; 
    } 

    /** 
    * @param string $input 
    * @return string 
    */ 
    public static function decode($input) 
    { 
     return base64_decode(strtr($input, '-_', '+/')); 
    } 
} 

但使用编码的任何方法并不shorte你的网址。

如果我们需要生成短网址 - 您可以创建“地图”。 例如,您生成散列“Wqwr42S”并在您的存储中写入“Wqwe42S它是/ bla-bla-bla”

+0

如果我问你一个简单的事情,我有一个很长的字符串,不知何故,我想把它缩短,然后恢复正常,这就是我想要的所有,而不使用分贝,@ maxim-tkach – Kapil

+0

你不能压缩100字节字符串为5字节而不保存在缓存或数据库中(您可以使用Redis,这是快速方法)。 –

+0

例如,您可以尝试使用gzcompress,但对于非常长的文本(1000字节到〜748字节) –