如何将字符串(即电子邮件地址)转换为唯一的整数,以将它们用作ID。如何将一个字符串转换为一个唯一的整数在php
回答
PHP整数可能存储的信息量是有限的。可以存储在字符串中的信息量不是(至少如果字符串不是不合理的长度)。
因此,您需要将任意长度的字符串压缩为非任意长度的整数。这是不可能没有数据丢失。
您可以使用散列算法,但散列算法可能总是碰撞。特别是如果你想将一个字符串散列为整数,碰撞概率相当高 - 整数只能存储非常少的数据。
因此,您应该坚持使用电子邮件或使用自动递增整数字段。
你能否更好地解释你的答案,特别是最后一段,谢谢 – jspeshu 2010-10-07 11:20:24
我必须说的很好的推理,但我可以@至少找到一个功能,例如:我有一个字段,即电子邮件,这是一个VARCHAR(40)然后,因为这些字段是唯一的所有值而不是使用哈希来避免合谋,我会添加一些值说XXXX,使他们的长度== 40仍然是唯一的,那么我怎么能有这个 – jspeshu 2010-10-07 11:24:17
那么一个独特的int。我仍然不认为你会找到这样一个函数:一个40个字符的字符串可能被存储在40个字节(如果它是ascii,unicode将需要*甚至更多*)。另一方面,整数只有8个字节(并且只在64位机器上)。因此,你仍然需要存储40字节的8字节... – NikiC 2010-10-07 11:36:56
尝试binhex功能
从上述网站:
<?php
$str = "Hello world!";
echo bin2hex($str) . "<br />";
echo pack("H*",bin2hex($str)) . "<br />";
?>
输出
48656c6c6f20776f726c6421
Hello world!
可以把它生成一个唯一的INT现在是看它“48656c6c6f20776f726c6421”六角左右 – jspeshu 2010-10-07 12:06:40
取决于INT有多大,但 - 有一个int值5216694956355254127 – 2010-10-07 21:16:40
如果电子邮件是ascii文本,您可以使用PHP ord function来生成一个唯一的整数,但它会是一个非常大的数字!
该方法是一次处理一个字符的电子邮件地址,为每个字符调用ord。 ord函数返回一个唯一表示字符值的整数。您可以用零填充每个数字,然后使用字符串连接将它们插入对方。
考虑“abc”。
ord("a");
>> 97
ord("b");
>> 98
ord("c");
>> 99
垫这些数字与0,和你有一个唯一的编号呢,那就是:970980990
。
我希望有帮助!
为什么不在本地创建自己的关联表,它将绑定具有唯一整数的电子邮件?
所以工作流程将是的线:有意义
1 get the record from the ldap server.
2 check it locally if it has already an int assigned.
2.1 if yes use that int.
2.2 if no, generate an associative row in the table locally.
3 do your things with the unique ids.
呢?
可以使用此功能:
function stringToInteger($string) {
$output = '';
for ($i = 0; $i < strlen($string); $i++) {
$output .= (string) ord($string[$i]);
}
return (int) $output;
}
有点难看,但工程:)
此代码生成其可以使用,因为它或作为BIGINT /类似的数据类型64位号码数据库如MySQL等
function get64BitNumber($str)
{
return gmp_strval(gmp_init(substr(md5($str), 0, 16), 16), 10);
}
echo get64BitNumber('Hello World!'); // 17079728445181560374
echo get64BitNumber('Hello World#'); // 2208921763183434891
echo get64BitNumber('http://waqaralamgir.tk/'); // 12007604953204508983
echo get64BitNumber('12345678910'); // 4841164765122470932
- 1. 将唯一字符串转换为唯一整数
- 2. 将一个整数数组转换为一个字符串
- 3. 如何将一串数字转换为一个整数列表?
- 4. 将字符串转换为唯一的数值在php
- 5. Powershell:将唯一的字符串转换为唯一的int
- 6. 如何将一个字符串转换为一个键?
- 7. 如何将字符串数组转换为唯一值数组?
- 8. 将一个复杂的字符串转换为一个数组在php
- 9. 转换一个字符串数组,一个整数数组
- 10. 将一串数字转换为一个整数,存储结果
- 11. 从一个字符串转换为一个日期在php
- 12. 将一个字节的字符串转换为一个unsigned int
- 13. 如何在一个字符串转换数学espression整数
- 14. 如何将一个NSString数组转换为一个c数组的字符串?
- 15. 将输入转换为一个整数字符串
- 16. 将整数和字符串的元组转换为一个字符串
- 17. 将一个字符串转换为一个可变在UNIX
- 18. C++ MFC将字符串数组的一部分转换为一个整数
- 19. 在转换时刻字符串一个唯一的主键
- 20. 如何将一个字符串转换为一个字符数组中的字符大小的字符数组?
- 21. 如何将一个字符串数组转换为一个Int数组?
- 22. C#如何将字符串转换为唯一的ID
- 23. 将一个UTF8字符串转换为一个UTF16字符串在c + +
- 24. 将一个字符串的第一个实例替换为一个变量或其他唯一字符串
- 25. 在excel中为字母数字字符串指定一个唯一的整数
- 26. 将字符串转换为一个列表和转换元素为整数
- 27. 如何从一个非唯一的字符串在PHP
- 28. 如何将一串int整数转换为一个整数数组?
- 29. 如何将一个整数转换为大会8086中的字符串
- 30. 转换字符串列表到一个单一的整数
投票不会真正的问题 – Svisstack 2010-10-07 16:05:41