我想要独特地缩短字符串文件ID以便在像bit.ly等的网址中使用.我可以使用数据库中的ID,但我希望网址是随机的.
什么是最好的解决方案?
网站将是一个移动网站,所以我希望它尽可能短
如果我有这样的一般网址(不限于推特或谷歌):
http://t.co/y4o14bI
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以检查这个网址是否缩短了?
在上面的例子中,我作为一个人当然可以看到它是短暂的,但是有一种自动而优雅的方式吗?
我正在编写一个url缩短函数,用于我正在学习php的项目,这里是代码(顺便说一下,我认为这global
不是一件好事:P):
$alphabet = array(1 => "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
"0","1","2","3","4","5","6","7","8","9","_","-");
function shorten($id){
global $alphabet;
$shortenedId = "";
while($id>0){
$remainder = $id % 64;
$id = $id / 64;
$shortenedId = $alphabet[$remainder].$shortenedId;
}
return $shortenedId;
}
Run Code Online (Sandbox Code Playgroud)
该代码取自这篇维基百科文章 并适用于php.我的问题是,当我通过64到功能我得到一个错误的(我的目的)结果的倍数,例如128回报B的是不正确的,它应该是AAA,但时间太长了3位数.
当然我也会开始觉得有些不对劲这段代码,如果我通过1'000'000'000'000因为$id
我得到nItOq ...我觉得这是不对的,因为像bit.ly的URL缩短服务返回6如果我使用它的数字ID,我不认为这个算法比他们更好.
那么,有两个问题:
我即将发布一款iPhone应用程序.它的部分功能是用户可以通过电子邮件发送应用程序的一些内容(太棒了!).
现在,默认情况下,我在新撰写的邮件正文中插入一些文本,包括指向App Store的链接,使收到邮件的人能够下载我的应用程序(革命性的!).
所以,我发现,应用的URL是:
http://itunes.apple.com/app/id[your apple app id here]
这非常方便,因为即使在应用程序确实存在之前,您实际上也可以在您的应用中包含该网址.(您的苹果应用ID在itunesconnect中显示).
但是,通过使用最近推出的itun.es URL缩短协议,我希望这看起来更好.
关于URL Shorteners我不太了解也不太了解.我只是希望能够以itun.es的方式表达已经拥有ID的尚未存在的应用程序的iTunes链接.
有人知道算法吗?
我想写一个不需要使用数据库的URL缩短器。相反,为了使运动部件尽可能少,该脚本只会基于一种算法为我的URL创建一个唯一的哈希值(例如md5,但md5会太长)。我不太确定该怎么做。有什么建议吗?
如果有关系,我宁愿用Ruby编写。
我们正在用 PHP 开发一个 URL 缩短器项目。我们使用 301 HTTP 重定向并自然地跟踪我们的链接访问。但有一些奇怪的事情:
我们缩短了一个网址,通过浏览器通过后,只跟踪了第一次访问,好像没有其他请求发送到我们的服务器,直接转到目标网址。(我认为这是浏览器缓存之后一试)。但 :
当尝试使用类似bitly 的服务时,它有不同的待遇。相同浏览器上的一些相同请求在位访问跟踪中被跟踪(实际上不止一个,我不明白为什么,我没有看到任何逻辑),同时它们也使用 301 重定向。(在左边浏览器窗口的底部有时会写“waiting for bit.ly...”,有时不会,实际上是随机的)。
这里包含任何技巧吗?这种不同的待遇会发生什么?
我想在Twitter上分享我的应用程序的链接.URL看起来像myapp://mylink
.Twitter没有突出显示这些URL,它们确实无法访问.我想把我的链接包装成类似bit.ly/xxxxxx
但是http://bit.ly和http://goo.gl都不支持自定义URL模式.
还有其他建议吗?
有没有办法说(以编程方式,我的意思是他们的API)谷歌URL缩短器不生成短的URL与字符,如:
0 O
1 l
因为人们在从显示器读取这些字符并在其他地方键入它们时经常会出错.
我已阅读问题和答案如何编写 URL 缩短程序?所有的数学都非常有意义。我的问题是,既然您无论如何都必须返回数据库/数据存储区进行查找,为什么不在字母表中生成一个随机短字符串并将其与完整的 URL 一起存储在数据存储区中,而不是将其转换回数字ID?
在我看来,这节省了在服务器上进行任何数学运算,降低了复杂性,并消除了短 URL 空间的“可步行性”(对于我的用例,这很关键;不得猜测 URL)。如果使用专为键->值查找而设计的 NoSQL 存储,那么从字符串(而不是数字 ID)查找完整 URL 值似乎不存在任何潜在的性能问题。
我想知道我是否遗漏了什么。
前段时间我看到一个网站,将游戏重播数据编码为unicode字符,以便您可以复制并粘贴地址与朋友分享。我基本上想做同样的事情——我在 JavaScript 对象中有一些数据,我想把它放到地址栏中。
我知道我可以使用jQuery.param或类似的东西,但我想要一个更紧凑的格式。
事实证明,这对谷歌来说有点棘手。大多数搜索结果都会出现 URL 缩短器,这明显不同。我不想在我的数据库中存储一个简短的 URL 以供以后查找。所有数据都应该在 URL 本身中。
我可以为此使用什么编码?算法的链接或描述很好,但 Node/JavaScript 的实现会更好。
我只需要支持最新版本的 Chrome stable,所以我不在乎旧浏览器是否无法处理 unicode。我想我会将数据放在片段部分(之后#
),所以我只需要支持适用于该片段的任何编码规则。我认为几乎任何事情都是允许的,不是吗?
url-shortener ×10
bit.ly ×2
algorithm ×1
c# ×1
encoding ×1
goo.gl ×1
google-api ×1
iphone ×1
itunes ×1
java ×1
javascript ×1
node.js ×1
php ×1
redirect ×1
url ×1
url-encoding ×1
url-scheme ×1