Функция за кодиране на стринг в числа

sorRy

Registered
Кодирам си един стринг в мд5 само че после искам всичко да стане на числа нещо като makeint(md5($string) ако може да помогнете с някоя готова
 
не защото стрина например е иван е умен става на мд5 обаче мд5 има и букви аз искам тва мд5 да го кодирам и да стане само на цифри
 
sorRy каза:
не защото стрина например е иван е умен става на мд5 обаче мд5 има и букви аз искам тва мд5 да го кодирам и да стане само на цифри

Ако е md5 - няма да можеш да го разкодираш предполагам го знаеш това :roll:
 
как пак да няма да може да го разкодира .. айде .. аз неразбрах точно какво искаш.. как така да станат на букви.. ако имаш предвид ако да речем напишеш asd123 и от това искаш да останат само цифрите ползва preg_replace извинявай ако несам те разбрал ..
 
така имам да кажем
asd123 и го кодирам мд5 и то става например 32a4tfaa67fg76asff546 и това искам да го кодирам през функция която го превръща в числов формат например 32a4tfaa67fg76asff546 става на 3254246567468676967
 
направи си просто два масива, където на всяка буква отговаря някакво число и му дай после един str_replace
 
Код:
<?php
$string = "Ivan";
$alpha = range("a","z");
$md5 = md5("$string");
foreach($alpha as $bukva) $md5 = str_replace("$bukva","","$md5");
echo "$md5";
?>
 
r0073x, по твоя начин ще премахне всички букви.

Няколко съвета:
Не слагай променливите в кавички и не използвай двойни кавички, освен ако нямаш променлива в тях :wink:
 
hexdec но числото ще стане толкова голямо че няма да може да се представи в променлива тип INT
Може би да го разделиш на сегменти по 4 или 8 знака и после да ги събереш?
 
Имам един въпрос.. За какво използваш функцията md5(); и след това искаш да премахваш буквите.. То става някаква безсмислица все едно. Тъй, че според мен, няма смисъл.
 
абе кой е казал че искам да махам буквите бе искам да го мина после през функция която да го направи в числов вид дадох и пример
raiden ме разбра само че това наистина е дълго
 
Еми няма как просто... числото може да достигне 16 на степен 32 което е приблизително 3.4 х 10 на степен 38ма или 340 милиарда милиарда милиарда милиарда. То може да се представи като число но ще е с плаваща запетая във вида 3.4e+38 (с доста повече цифри след десетичната запетая)
 
Код:
<?php
$string = "This is a veerrrrrrrrrrryyyyyyyyyyyyyyyyyyyyyyy long stringgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg.";
echo preg_replace("/[^0-9]/i","",md5(hexdec($string)));
?>
За сега го декодира стринга и го превръща в мд5 низ и после премахва всички други знаци освен цифрите.Можеш да го направиш още по сложно, но ще стане много голямо число.
 
Прочети малко за хешове в уикипедия.
И по-точно за колизиите.
Защото е абсолютната гаменщина да правиш мд5 и после да му махаш буквите.
Извинете ама ако има хеш
3fgg6ub97dfg7dfegh
и хеш
36sdhkjk9asdh77fmn
Като махнеш цифрите ще се получи едно и също (колизия), МАКАР те да нямат нищо общо както добре се вижда от горния пример.

С малко мисъл, можеш да си напишеш хеш, който връща нещо съставено само от цифри.
 
Ох, ама и вие сте едни.
Човекът 20 пъти повтори ще иска да направи буквите на числа, НЕ ДА ГИ МАХА, вие пак своето си знаете. Като ще отговаряте на темата, поне я четете отначало и внимателно.

Ако ще го използваш за кодиране на пасове, всъщност е доста оригинално, защото на практика няма разбиване :)


Може да пробваш така

$arrLetters = array('a', 'b', 'c'......'z');
$arrNumbers = array('1', '2', '3'....'n');
$md5String = md5('текст');
$md5StringNew = str_replace($arrLetters, $arrNumbers, $md5String);
 
Ето ти малко по-лесен вариант, като функция:

function SafeMD5($string){
$arrLetters = range('a', 'z');
return str_replace($arrLetters, array_flip($arrLetters), md5($string));
}
 

Back
Горе