我正在使用此代码进行简单的加密:
function idEncrypt($string)
{
$multiply = 2457;
$original = array('1', '2','3', '4', '5', '6', '7', '8', '9', '0');
$replace = array('6', '3', '9', '1', '2', '8', '5', '0', '4', '7');
$idEncrypt = str_replace($original, $replace, $string);
//$idEncrypt = $idEncrypt * $multiply;
return $idEncrypt;
}
它应该采用一个数字,并将其替换为
$replace
数组中的正确数字。
我输入“234”,得到的答案是“441”,而我应该得到“391”。
有什么建议吗?
问题在于,对于数组中的每个元素,
str_replace
被一遍又一遍地应用。
对于“234”,首先将 2 替换为 3,然后将 3 替换为 9,然后将 9 替换为 4。
将 3 替换为 9,然后将 9 替换为 4。
最后,4 被替换为 1,形成“441”。
str_replace
函数的文档中找到:
更换订单陷阱
因为str_replace()从左到右替换,所以在进行多次替换时,它可能会替换之前插入的值。另请参阅本文档中的示例。
strtr
函数:
function transform($string) {
$original = '1234567890';
$replace = '6391285047';
return str_replace($string, $original, $replace);
}
nb。请不要自行编写“加密”功能。使用已建立的、经过充分测试的算法和库。