Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Konwertowanie textu do ciągu binarnego
iwosz
post
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 30.07.2009

Ostrzeżenie: (0%)
-----


Witam,

nie mogę znaleść odpowiedzi na moje pytanie, które jest dość proste jednak z tego co widzę sprawia jakies problemy, bo nie mogę nic znaleść w sieci (IMG:style_emoticons/default/worriedsmiley.gif)

Jak można w PHP 5.3 w optymalny sposób przekonwertować text np. "Ala ma kota" na ciąg binarny, tak aby zapisać to wszystko w bazie danych w polu BLOB w taki sposób aby można było to odczytać z powrotem jako text? W efekcie chcę uzyskać odpowiednia wartość aby zapisać do DB (Firebird) jako BLOB sub_type binary.

"W sposób optymalny" mam na myśli coś lepszego niż przeglądanie textu po każdym znaczku i konwertowanie... to nie zadziała dla dużych ilości textu. Dodatkowo taka funkcja powinna przyjmować jako parametr kodowanie w jakim jest zakodowany text dla poprawnej zamiany, mam rację?

Kombinowałem w tej sposób:
  1. for($i=0;$i<strlen($params_str);$i++){
  2. $blob_data .= sprintf("%08s ",decbin(ord($params_str[$i])));
  3. }

ale to nie działa poprawnie i wydajnie... (IMG:style_emoticons/default/worriedsmiley.gif)

Próbowałem też czegoś takiego:
  1. $blob_data = unpack('H*', $params_str);
  2. $blob_data = base_convert($blob_data[0], 16, 2);

ale to też nie działa poprawnie...

W ASP.NET jest funkcja które przyjmuje właśnie jako parametr kodowanie oraz text i konwertuje do ciągu binarnego, jednak w PHP nie mogę znaleść odpowiednika, a wiem że się da to zrobić.

Proszę o sugestie, z czego skorzystać i jakich funkcjo użyć w tym celu. Z góry dzięki!

Ten post edytował iwosz 28.09.2012, 15:18:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. base_convert pracuje nad tekstem i zwraca tekst, więc jest tutaj kompletnie nieodpowiedni.
2. Praca z danymi binarnymi w PHP jest wyjątkowo nieprzyjazna. Nie istnieje typ zmiennej byte/char, typ integer jest zmiennej długości (SIC!) i jedyne co nam pozostaje to... tekst. Stringi w PHP można traktować jako tablicę typu byte/char (Google: binary string).
3. Na dobrą sprawę wszystko co musisz zrobić to upewnić się, że tekst jest w odpowiednim kodowaniu (iconv, mb_convert_encoding) i traktować tekst jako dane binarne od tego momentu.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 00:53