![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (10%) ![]() ![]() |
Witam,
niejako, że jestem bardziej front-endowcem ale muszę ogarnąć pewien problem z php Muszę zamienić zmienną która ma wartość ciągu znaków na liczbę. W wielkim skrócie dostaję $product_id w formie ciągów znaków i muszę zamienić ją aby była intigerem
Chodzi mi aby zawsze taki sam ciąg znaków np: 3MADAPTERP3EV był konwertowany na tą samą liczbę, Proszę o wskazówki, przykład, nakierowanie. Pozdrawiam |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (10%) ![]() ![]() |
Dzięki za odpowiedź jednak nie wnosi dla mnie nic nowego.
Otóż danych wejściowych mam ok 12 tyś typu:
więc ręczna zamiana odpada ;-) są to produkty na sklepie, które są importowane z pliku xml, tylko że w pliku xml id produktu jest właśnie łańcuchem znaków a ja potrzebuje unikalnego $product_id w formie liczby int. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 27 Dołączył: 21.07.2013 Ostrzeżenie: (0%) ![]() ![]() |
Możesz napisać własną funkcje np.
Itd. ![]() Ten post edytował kujol 14.03.2014, 22:52:53 -------------------- ;)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (10%) ![]() ![]() |
ciekawy sposób, dzięki
a może ktoś się wypowiedzieć na przykładzie jak można to zrobić funkcją haszującą - szukałem przykładów ale ... nie znalazłem zamiany str -> int |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 324 Pomógł: 27 Dołączył: 21.07.2013 Ostrzeżenie: (0%) ![]() ![]() |
W md5, hash itp. masz zawsze jakieś litery, może jest coś zamieniającego na same cyfry, ale tego nie wiem.
-------------------- ;)
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
(być może w funkcji base_convert jako drugiego argumentu bedziesz musiał użyć stringa "ABCDEF...abc..012..9") hashe raczej tu nie są potrzebne/wskazane. Nic nie musisz ukrywać, a możesz spowodować kolizję. Ten post edytował timon27 14.03.2014, 23:55:50 |
|
|
-Gość- |
![]()
Post
#8
|
Goście ![]() |
Ciekawe jak tamto ID bylo generowane. Jakbys podal wiecej przykladow, to mozna by sprobowac odczytac cos z tamtego.
Co do nowego id, numerycznego 1. wszystko do malych znakow(znajdziesz odpowiendia funkcje, nie pamietam teraz) str_replace('a', 11, $where); str_replace('b', 12, $where); itp. czyli podobnie jak ktos wyzej pisal 2. inny sposob robisz sume $sum = 0; $chars=explode('', $oldId); foreach($chars as $char) { if !is_numeric($char) { switch($char) { case 'a': $char=11; break; chase 'b': $char=12; break; } } $sum =+ $char; } $sum to nowy id 3. a jesli nowy id mialby nie miec zwiazku z starym(gorsza opcja, bo nigdy nie wiadomo czy nie trzeba bedzie kiedys tego dopasowywac wstecznie) to mozna po prostu wylosowac id np. funkcja rand() dla id 6 znakowego to bedzie rand(111111, 999999); albo uzyc do tego aktualnego czasu microtime(true); |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 550 Pomógł: 75 Dołączył: 5.06.2012 Skąd: Lębork Ostrzeżenie: (0%) ![]() ![]() |
Myślę, że na górze zostały podane już podobne sposoby, ale tutaj skromny kod ode mnie
![]()
Kod konwertuje każdy znak do kodu ASCII i dołącza go do stringa newID. Dzięki temu sposobowi możesz w każdym momencie powrócić do pierwotnego ID. Wystarczy pogrupować po 2 cyfrowe liczby i przelecieć w analogiczny sposób funkcją chr ![]() Ten post edytował Wazniak96 15.03.2014, 11:15:15 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 27.05.2025 - 19:43 |