Как я могу создать PHASH
значение из строки в PHP
?
Я унаследовал ASP
кодовая база, которая использует PHASH
с strings
(не пути к изображениям). Из исследований, PHASH
используется для изображений.
В настоящее время я переписываю эту часть кодовой базы, используя PHP
и есть несколько библиотек, которые кажутся полезными:
тем не мение, они оба требуют пути к изображению. я пробовал jenssegers/imagehash
и это вызывает исключение, когда я передаю случайную строку.
Код ниже как PHASH
в настоящее время используется в устаревшей кодовой базе:
sLoginPassword = RequestValue("Password")
SQLVal(PHASH(sLoginPassword))
PHASH
пользовательская функция внутри кодовой базы, я не смог найти ее из-за смешанного кожуха (PHash
против PHASH
).
К счастью, я нашел следующее Так ответь который написан на C#
, Спасибо @ Lathejockey81 за предоставление ответа, я преобразовал его в PHP ниже (как ответ).
изготовленный на заказ PHASH
функция преобразована из Так ответь:
function PHASH($string)
{
$value = trim(strtoupper($string));
$dAccumulator = 0;
$asciiBytes = [];
for($i = 0; $i < strlen($value); $i++) {
$asciiBytes[] = ord($value[$i]);
}
for($i = 0; $i < count($asciiBytes); $i++) {
if(($i & 1) == 1) {
$dAccumulator = cos($dAccumulator + (float) $asciiBytes[$i]);
} else {
$dAccumulator = sin($dAccumulator + (float) $asciiBytes[$i]);
}
}
$dAccumulator = $dAccumulator * pow(10, 9);
return round($dAccumulator);
}
Других решений пока нет …