84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
請問該如何用php產生不重複的字串?如同youtube後面的結尾會出現的字串:6Af6b_wyiwI (網址可接受的字元)而且有大小寫之分?以及可以設定每次出現的字串長度例如4~7隨機的就會變成 ga79e aa09gsw awe9f諸如此類(每次都會這樣變化
人生最曼妙的风景,竟是内心的淡定与从容!
建议用时间戳,可以MD5或sha1加密,但长度是固定的大小写固定,可以截取,也可以自己定义加密规则,自己定义的话,就可以设置想要的长度。这样做没有重复的可能(不可能事件)如果是自己定义字符串,然后随机获取的话,有重复的可能性(小概率事件)。如果是只是写url的话你也可以参考segmentfault的url写法
https://segmentfault.com/q/10...
PHP 10进制和62进制互转:
echo gmp_strval(gmp_init('9876543210', 10), 62)."\n"; //AmOy42 echo gmp_strval(gmp_init('AmOy42', 62), 10)."\n"; //9876543210
上面的AmOy42应该就是你想要的"字符串",其实它是一个62进制数字.62进制(10+26+26)利用10个数字+26个小写字母+26个大写字母来表示数值,从而大大减少数值位数.9876543210则是数据库里的自增ID,从而实现唯一.
生成顺序增长的数列,然后通过ascii码转为字符串
说个简单的方法,sha256等hash算法获取二进制数据(而不是十六进制字符串),然后再用base64编码
这参考短链接生成方法就OK
建议用时间戳,可以MD5或sha1加密,但长度是固定的大小写固定,可以截取,也可以自己定义加密规则,自己定义的话,就可以设置想要的长度。这样做没有重复的可能(不可能事件)
如果是自己定义字符串,然后随机获取的话,有重复的可能性(小概率事件)。
如果是只是写url的话
你也可以参考segmentfault的url写法
https://segmentfault.com/q/10...
PHP 10进制和62进制互转:
上面的AmOy42应该就是你想要的"字符串",其实它是一个62进制数字.
62进制(10+26+26)利用10个数字+26个小写字母+26个大写字母来表示数值,从而大大减少数值位数.
9876543210则是数据库里的自增ID,从而实现唯一.
生成顺序增长的数列,然后通过ascii码转为字符串
说个简单的方法,sha256等hash算法获取二进制数据(而不是十六进制字符串),然后再用base64编码
这参考短链接生成方法就OK