Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nieszczęsne kodowanie
Forum PHP.pl > Forum > Przedszkole
torbicki65
Witam
Czy jest jakaś funkcja w PHP zmieniająca takie dziwne kodowanie
\u0142 -> ł
\u0119 -> ę

itd.?
Siedzę i szukam i już nie mogę :/
1010
str_replace" title="Zobacz w manualu PHP" target="_manual

  1. <?
  2. $tab1 = array('u0142', 'u0119');
  3. $tab2 = array('ł', 'ę');
  4.  
  5. $tekst = str_replace($tab1, $tab2, $tekst);
  6.  
  7. ?>
torbicki65
smile.gif
To niestety był tylko przykład, do zmiany mam dużo więcej dziwnych znaków, nie tylko polskie, ale też inne niestandardowe z tablicy UTF8, razem będzie kilkaset.
Dlatego zapytałem o jakąś funkcję konkretnie do tych celów.

Myślałem, żeby zrobić to replace z wyrażeniem regularnym, mam jednak problem, jednak nie wiem, czy da się zrobić to w ten sposób - chodzi mi o to, czy w drugim argumencie preg_match można stosować wyrażenie regularne? Chodzi mi o to, żeby to, co wyłapywało z ciągu textu, było zamienione na encję.

np. \u0144 -> ń

(szesnastkowe 144 to dziesiętne 324). Niestety na razie nic innego nie wykombinowałem, ale nie wiem, czy da się zrobić tak, żeby w drugim argumencie dać też wyrażenie regularne (a najlepiej wstawić funkcję, chociażby własną), czy zostaje tylko pregmatch w połączeniu z preg_match?

Chociaż to i tak wszystko jest na około, aż nie chce mi się wierzyć, że nie ma czegoś gotowego do tego :/
piotrooo89
a iconv + reszta funkcji iconv
torbicki65
Póki co, zanim przeczytałem Twoją odpowiedź Piotrze, skonstruowałem po prostu coś takiego.

  1. <?php
  2. preg_replace('|u([a-fA-F0-9]{4})|e',"'&#'.hexdec('1').';'",$text);
  3. ?>


I na razie działa, i nawet dość szybko. W iconv patrzyłem w nocy, ale ostatecznie nie miałem sił i poległem nad ranem winksmiley.jpg
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.