Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Najkrótsze zakodowanie stringa.
Forum PHP.pl > Forum > Przedszkole
haryb
Mam następujące pytanie jak w php można w prosty sposób skrócić długość stringa ale tak by później móc odzyskać całą informacje?
Próbowałem z długiego stringa robić md5 i później odkodowywać ale md5 zwraca jeszcze za długi ciąć.
Czy jest jakieś bardziej kodowanie gdzie można by skrócić tą długość?

p.s. Czy znacie może namiary na jakiąś gotową funkcję która zamieni mi tablice na liczbe a inna funkcja z powrotem po podaniu ów liczby utworzy tablice?


pozdro
haryb
Spawnm
md5 nie odkodujesz ...

chyba nie ma takiej gotowej funkcji .
sam coś zmontuj np str_replace('az','X',$tresc); i odkodowanie str_replace('X','az',$tresc);
tyle że może być problem z odkodowaniem...
Spawnm
tylko że to miało skrócić stringa ...
haryb
No właśnie szukam takiego sposobu by np z takiej długości :
234234fddf245345sdfdfgd
Zrobił chociaż połowe i żeby później można było odkodować.

Ewentualeni jeśli znacie rozwiązanie z mojego P.S w pierwszym poście to również rozwiązało by mój problem.
Po prostu musze tylko i wyłącznie za pomocą GET ( zadna sesja, coockie itd nie wchodzi w gre)przesłać zawartość tablicy - kodujac ja na jakas liczbe, bity itd a póżniej odebrac i znowu odtworzyc cal tablice.
I mam taki jakiś trefny ale działąjący alegorytm który zamienia tablice na string 01-nkowy nastpenie spowrotem tworzy tablice , ale jak tablica ma kilkanascie rekordow to ten string zakodowany jest strasznie dlugi i nie chciał bym go wrzucać do GETa.


pozdro
haryb
dr_bonzo
O jeb.
Koles, do kompresji masz zip'a, gzipa itd.
md5 sie do tego nie nadaje bo tego nie odkodujesz.


A nie mozesz zapisac w bazie tej tablicy i tylko przekazac jej ID?
erix
Cytat
Czy jest jakieś bardziej kodowanie gdzie można by skrócić tą długość?

Przypomnij sobie lekcję z systemów liczbowych z informatyki (jeśli ją miałeś) i stwórz własny korzystając z pozostałych znaków alfabetu. winksmiley.jpg Nie tylko 1-16 (hex), ale 1-40 cyfr w jednym znaku. winksmiley.jpg
haryb
Cytat(dr_bonzo @ 1.04.2009, 17:58:57 ) *
A nie mozesz zapisac w bazie tej tablicy i tylko przekazac jej ID?

Odpada - nie ma być wogóle wykorzystana baza.

Pozdro
haryb
erix
To pliki możesz przecież ponazywać odpowiednio, zrobić sobie płaską bazę, czy wreszcie SQLite...
timon27
Ja bym to zrobił tak: aby maxymalnie zmniejszyć wielkość ciągu ustal jakie znaki mogą się w nim znajdować (np wiesz że nie powinno tam być dużych liter), a następnie wrzuć cały alfabet do tablicy
Kod
$tablica=array('a','b','c');
$l=length($tablica);

następnie ciąg rozbijasz na tablice:
Kod
$ciag=explode("",$ciag);

i zapisujesz ciag w liczbie:
Kod
$suma=0;
foreach($ciag as $znak){
$n=numer_znaku($tablica,$znak)
$suma=$suma*$l+$n;
}

gdzie funkcja 'numer_znaku' zwraca liczbę mówiącą na którym miejscu w tabeli znajduje się znak

Gwarantuje Ci że taki sposób kompresji jest najlepszy (pesymistycznie), lecz jego kodowanie i odkodowanie przy dłuższych ciągach może być czasochłonne
slewin
Cytat(Spawnm @ 1.04.2009, 18:59:24 ) *
md5 nie odkodujesz ...

A program John the Ripper czarodziej.gif
Spawnm
Cytat(slewin @ 1.04.2009, 21:06:20 ) *
A program John the Ripper czarodziej.gif

a brutal force, a tęczowe tablice...
tu raczej chodzi o szybie odkodowanie a nie zarzynanie kompa.
ts23
Cytat(erix @ 1.04.2009, 20:03:51 ) *
Przypomnij sobie lekcję z systemów liczbowych z informatyki (jeśli ją miałeś) i stwórz własny korzystając z pozostałych znaków alfabetu. winksmiley.jpg Nie tylko 1-16 (hex), ale 1-40 cyfr w jednym znaku. winksmiley.jpg

36, używając base_convert
mls
Cytat(slewin @ 1.04.2009, 21:06:20 ) *
A program John the Ripper czarodziej.gif


Nic nie odkodowuje md5. Można co najwyżej trafić na taki sam hash.

A odnośnie kompresji - zależy jak długi tekst chcesz skompresować. Jeśli krótki, to nie warto się tym tematem interesować. Jeśli długi, można spróbować z gzcompress" title="Zobacz w manualu PHP" target="_manual połączonym z base64_encode" title="Zobacz w manualu PHP" target="_manual. Połączony, o ile chcesz użyć w skompresowanym ciągu samych "czytelnych" znaków.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.