Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: kompresja stringa / skracanie url
Forum PHP.pl > Forum > PHP
fiszol
Witam. Potrzebuję przepchnąć w urlu 150 bajtów tekstu (są ta 22 kolory zapisane hexie) i wygląda to mniej więcej tak:

  1. <?php
  2. $str = "C40000|E34C1E|FF9012|FFD52B|FFFF00|C3EF13|AEFF45|2FEB2F|2BFF00|54FFC0|2AB6A
    D|21A3EE|1C5CC9|0606C6|8C0FFA|B81EFA|EA2BFF|E01689|CC0E1B|FF0F1F|870000|AB0202"
    ;
  3. ?>

Jedyne co wygooglowałem to kompresja przy pomocy gzcompress() a później potraktowanie tego base64_encode żeby dało się przesłać przez http. Ta operacja pozwala oszczędzić jakieś 50 bajtów i to zawsze coś ale url wciąż pozostaje nieziemsko długi. Pytanie brzmi: czy istnieją jakiekolwiek inne <i>odwracalne</i> metody skrócenia stringa?
krowal
150 znaków to nieziemsko długi url ? biggrin.gif Nie przesadzaj, a jeśli nie chcesz mieć takiego urla to możesz te dane postem przesyłać. Kompresja jest bez sensu bo to żadna oszczędność przy tak małej ilości danych.
krzotr
Każdy kolor ma 6 znaków (wywalamy separator '|')
Każdy kolor jest w HEX "ff" = \xff

  1. <?php
  2. $str = "C40000|E34C1E|FF9012|FFD52B|FFFF00|C3EF13|AEFF45|2FEB2F|2BFF00|54FFC0|2AB6A
  3. D|21A3EE|1C5CC9|0606C6|8C0FFA|B81EFA|EA2BFF|E01689|CC0E1B|FF0F1F|870000|AB0202";
  4.  
  5. $str = str_replace( '|', '', $str );
  6.  
  7. $str = base64_encode(gzdeflate(pack( 'H*', $str ), 9));
  8.  
  9. echo strlen($str);


Ciąg ma 96 bajtów
fiszol
Nie mogę postem bo te dane generuje "użytkownik", na koniec dostaje linka z kolorami które sobie wybrał i tego linka może dowolnie przekazywać innym żeby oni też mogli sobie coś w danej palecie pomieszać. Anyway, już wiem co zrobię. id||paleta w sqlu link ?paleta=id dziękuję dobranoc biggrin.gif Tak będzie najlepiej. Mimo wszystko kompresja urla wciąż mnie interesuje ;p

@krzotr: dzięki.
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.