Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter] UTF-8 i strtr
Forum PHP.pl > Forum > PHP > Frameworki
Herezad
Witam!
Mam problem z funkcją strtr otóż teoretycznie działa tylko po przejściu danego stringa zmienia literę ale dodatkowo dodaje znak czarnego pytajnika

Tu najprostszy przykład:

  1. <?php
  2.  
  3. class Test extends Controller
  4. {
  5. function index()
  6. {
  7. $text = 'płot';
  8. echo  $text;
  9. $wynik = strtr($text, 'ł', 'l');
  10.            echo $wynik;        
  11. }
  12. }
  13. ?>


próbowałem z kodowaniem UTF-8 z BOM i bez i wynik jest podobny
Pozdrawiam
guitarnet.pl
utf zapisuje regionalne znaki dwubajtowo , wyciagnij sobie z ponizszej funkcji kody znakow regionalnych , wrzuc do strtr i gotowe

  1. <?php
  2. /**
  3.      * Prepare friendly URL UTF-8
  4.      * @param $url
  5.      * @return friendly_url
  6.      */
  7.    function FriendlyUrl($przyjazny_url)
  8.    {
  9.        $przyjazny_url=strtr($przyjazny_url,'()[]`!@#$%^&*_+={}:;",.<>/?','***************************');
  10.        $przyjazny_url = str_replace('*', '', $przyjazny_url);
  11.        $przyjazny_url = str_replace("'", '', $przyjazny_url);
  12.        $przyjazny_url = urlencode($przyjazny_url);
  13.        $przyjazny_url = htmlspecialchars($przyjazny_url);                        
  14.            
  15.         $przyjazny_url = str_replace("%C4%85", 'a', $przyjazny_url);
  16.        $przyjazny_url = str_replace("%C4%84", 'a', $przyjazny_url);
  17.        $przyjazny_url = str_replace("%C4%87", 'c', $przyjazny_url);
  18.        $przyjazny_url = str_replace("%C4%86", 'c', $przyjazny_url);
  19.        $przyjazny_url = str_replace("%C4%99", 'e', $przyjazny_url);
  20.        $przyjazny_url = str_replace("%C4%98", 'e', $przyjazny_url);
  21.        $przyjazny_url = str_replace("%C5%82", 'l', $przyjazny_url);
  22.        $przyjazny_url = str_replace("%C5%81", 'l', $przyjazny_url);
  23.        $przyjazny_url = str_replace("%C3%B3", 'o', $przyjazny_url);
  24.        $przyjazny_url = str_replace("%C3%93", 'o', $przyjazny_url);
  25.        $przyjazny_url = str_replace("%C5%9B", 's', $przyjazny_url);
  26.        $przyjazny_url = str_replace("%C5%9A", 's', $przyjazny_url);
  27.        $przyjazny_url = str_replace("%C5%BC", 'z', $przyjazny_url);
  28.        $przyjazny_url = str_replace("%C5%BB", 'z', $przyjazny_url);
  29.        $przyjazny_url = str_replace("%C5%BA", 'z', $przyjazny_url);
  30.        $przyjazny_url = str_replace("%C5%B9", 'z', $przyjazny_url);
  31.        $przyjazny_url = str_replace("%C5%84", 'n', $przyjazny_url);
  32.        $przyjazny_url = str_replace("%C5%83", 'n', $przyjazny_url);
  33.        $przyjazny_url = str_replace("%3F", '', $przyjazny_url);
  34.        $przyjazny_url = str_replace("+", '-', $przyjazny_url);
  35.  
  36.        $przyjazny_url = strtolower($przyjazny_url);
  37.        return $przyjazny_url;
  38.    }
  39. ?>
l0ud
Nie ma sensu kombinować, po prostu zainteresuj się tymi odpowiednikami:
http://pl.php.net/manual/en/ref.mbstring.php
guitarnet.pl
pod warunkiem ze ma dostep do modulu mbstring, a nawet jak ma to czyni to aplikacje malo "przenaszalna" na inne serwery
l0ud
Można też użyć już gotowej implementacji
http://codeigniter.com/forums/viewthread/46207/

tutaj jest jak to zrobić za pomocą tej biblioteki:
http://sourceforge.net/projects/phputf8

Wtedy po prostu używa się odpowiedników dla tych funkcji z dopiskiem utf8_

Nie mam niestety pojęcia, na ile informacje w tamtym temacie są aktualne...
AxZx
proponuję zapomnieć o CI i zainteresować się Kohana. tam jest cały zestaw funkcji dla utf8.
Herezad
Problem rozwiązany trochę nie elegancko i nie przejrzyście ale działa a w tym momencie to dla mnie jest najważniejsze smile.gif
  1. <?php
  2. $przyjazny_url = $this->input->post('tytul');
  3.       $przyjazny_url = str_replace('Ą', 'a', $przyjazny_url);
  4.       $przyjazny_url = str_replace('ą', 'a', $przyjazny_url);
  5.       $przyjazny_url = str_replace('Ć', 'c', $przyjazny_url);
  6.       $przyjazny_url = str_replace('ć', 'c', $przyjazny_url);
  7.       $przyjazny_url = str_replace('Ę', 'e', $przyjazny_url);
  8.       $przyjazny_url = str_replace('ę', 'e', $przyjazny_url);
  9.       $przyjazny_url = str_replace('Ł', 'l', $przyjazny_url);
  10.       $przyjazny_url = str_replace('ł', 'l', $przyjazny_url);
  11.       $przyjazny_url = str_replace('Ó', 'o', $przyjazny_url);
  12.       $przyjazny_url = str_replace('ó', 'o', $przyjazny_url);
  13.       $przyjazny_url = str_replace('Ś', 's', $przyjazny_url);
  14.       $przyjazny_url = str_replace('ś', 's', $przyjazny_url);
  15.       $przyjazny_url = str_replace('Ż', 'z', $przyjazny_url);
  16.       $przyjazny_url = str_replace('ż', 'z', $przyjazny_url);
  17.       $przyjazny_url = str_replace('Ź', 'z', $przyjazny_url);
  18.       $przyjazny_url = str_replace('ź', 'z', $przyjazny_url);
  19.       $przyjazny_url = str_replace('Ń', 'n', $przyjazny_url);
  20.       $przyjazny_url = str_replace('ń', 'n', $przyjazny_url);
  21.       $przyjazny_url = str_replace('?', '_', $przyjazny_url);
  22.       $przyjazny_url = str_replace('(', '_', $przyjazny_url);
  23.       $przyjazny_url = str_replace(')', '_', $przyjazny_url);
  24.       $przyjazny_url = str_replace('.', '_', $przyjazny_url);
  25.       $przyjazny_url = str_replace(',', '_', $przyjazny_url);
  26.       $przyjazny_url = str_replace('-', '_', $przyjazny_url);
  27.       $przyjazny_url = str_replace(' ', '_', $przyjazny_url);
  28. ?>

i w sumie tyle wystarczyło
Pozdrawiam i dzięki za pomoc.
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.