如何在PHP中将字符串转换为整数?

时间:2017-02-16 09:33:50

标签: php converter

(关于PHP类型转换,这个问题。)

我已经阅读了几个问题,最好不要向用户显示记录ID,但是使用另一个值,它不会提供有关数据库中有多少记录的任何信息,等等。我想要为了实现这一点,在搜索谷歌之后,令人惊讶的是没有找到解决方案。

所以,我的问题是,是否有可能将一个(长的,例如)字符串序列转换为唯一的(或者对于至少百万个转换器而言足够独特)数字序列,是否有任何可用的选项我不知道的? 只是为了向您展示一个例子:

 $uName = $this->newUsername;
 $publicId = $this->strToInt(somecomplexstring); // Outputs something like 13272992
 // Or feed with username
 $publicId = $this->strToInt($uName);

3 个答案:

答案 0 :(得分:1)

您可能会考虑使用类似slu g的东西。因此,您的用户将在数据库中拥有唯一的ID,但也是一个独特的slug(随机字符串,例如TGqJItemU5TGqJItemU5f6S5VaCr2n)。然后,您可以在向浏览器显示数据时使用此slug而不是id。

答案 1 :(得分:0)

如评论中所述,您可以使用uniquid获取唯一字符串。此函数将返回十六进制字符串。

如果您只需要数字,则只需使用此hexdec将十六进制转换为十进制数。

最终代码如下所示:

hexdec(uniqid());

从字符串中获取整数的另一种方法是使用md5。此函数还返回十六进制字符串,因此您必须使用hexdec来获取十进制数

请注意,md5不是一个唯一的字符串,有一个(非常小的)意外碰撞的概率(340个十亿分之一,请参阅How many random elements before MD5 produces collisions ?以获取更多信息)

答案 2 :(得分:-1)

您可以使用:

md5(uniqid(rand(),true))