Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Konwerter znaków
Forum PHP.pl > Forum > Gotowe rozwiązania > Szukam
KR2615
Witajcie. Dzisiaj bawię się bramką SMS Portecha. Jest to fizyczne urządzenie, prawdopodobnie produkcji radzieckiej smile.gif z 1999 roku. Pobieram z niego treści SMSów telnetem i dalej przekazuję do skryptu PHP. Wszystko jest OK do puki w SMSie nie pojawi się polski znak. Wtedy cała wiadomość wygląda mniej więcej tak:
Cytat
004E0069006500200063006800630065002000730069011900200064006F0077006900650064007A
00690065010700200063007A0079002000740065017C0020006E0069006500200

Testowo wysłałem wiadomość składającą się tylko z dużego Ż z kropką. Otrzymałem:
Cytat
017B

Czy ktoś z Was mógłby podrzucić funkcję konwertującą te dziwne znaki do ludzkiego formatu? Z góry dzięki!
kapslokk
  1. echo mb_convert_encoding('Ż', 'UTF-8', 'HTML-ENTITIES');


Za 017B wstawiasz sobie kolejne 4 znaki z tego ciągu.
Kwestia tego, żeby rozbić string co 4 znaki.

Funkcja na szybko:

  1. function convertString($string){
  2. $string = preg_replace('/([A-F0-9]{4})/', '&#x$1;', $string);
  3. return mb_convert_encoding($string, 'UTF-8', 'HTML-ENTITIES');
  4. }
KR2615
Super, dzięki smile.gif Jeszcze się tylko zastanawiam, jak nauczyć ten skrypt PHP odróżniać SMSy zakodowane w ten sposób od zwykłych SMSów.
kapslokk
Smsy zakodowane będą posiadały tylko duże litery od A do F i cyfry. Może po tym?
KR2615
Mozna by przepuszczac przez niego wszystie SMSY. Zauwazylem, ze dla stringa "Zwykly tekst" zwraca po prostu "Zwykly tekst". Co innego dla stringa "DACAN Patryk: 505123456 " Jesli wlapie czteroznakowy ciag cyfr badz HEXów probuje go konwertowac.
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-2024 Invision Power Services, Inc.