【问题标题】:php how to short a string?php如何缩短字符串?
【发布时间】:2016-11-04 10:56:35
【问题描述】:

我的问题是我的 url 中的参数很少,比如

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 的短数字或字母数字字符串。

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

我知道base64_encode / decode,但是这个函数会产生巨大的url,我需要一个短的。

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

目的 - 我想为我的网站制作短网址以用于 seo 目的,并且还想在这些网址中设置一些参数,这些参数应该对所有人隐藏

请帮忙,

【问题讨论】:

  • 这样做的目的是什么?没听懂……你是在说 URL 缩短器吗?
  • 我想为我的网站制作短网址以用于 seo 目的,并且还想在这些网址中设置一些参数,这些参数应该对所有人隐藏。 @鲍勃
  • 这是否意味着 kid55e4s554e4s5 可能是别的?就像 magicxyz?
  • 是的!但我必须能够将其转换回原始格式,以便我可以从参数中检索值。 @鲍勃
  • 然后为每个url创建一个唯一的id,将url和uniqueid存储在数据库中并检查匹配

标签: php function decode encode


【解决方案1】:

您可以使用 url 格式的 base64 编码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, '-_', '+/'));
    }
}

但是使用任何编码方法都不会缩短你的url地址。

如果我们需要生成短网址 - 您可以创建“地图”。 例如,您生成哈希“Wqwr42S”并在存储中写入“Wqwe42S it is /bla-bla-bla”

【讨论】:

  • 如果我问你一个简单的问题,我有一个很长的字符串,不知何故我想把它缩短,然后让它恢复正常,这就是我想要的,不使用 db,@maxim- tkach
  • 如果不保存在缓存或数据库中,您无法将 100 字节字符串压缩为 5 字节(您可以使用 Redis,这是一种快速的方法)。
  • 例如,您可以尝试 gzcompress,但它适用于非常长的文本(1000 字节到 ~748 字节)
猜你喜欢
  • 2011-04-28
  • 1970-01-01
  • 2014-11-14
  • 1970-01-01
  • 2017-11-11
  • 2013-04-23
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
相关资源
最近更新 更多