Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CodeIgniter] UTF-8 i strtr
Herezad
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 7.04.2009

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


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
Go to the top of the page
+Quote Post
guitarnet.pl
post
Post #2





Grupa: Zarejestrowani
Postów: 74
Pomógł: 4
Dołączył: 7.03.2008

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


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. ?>


--------------------
Skrypty php, ajax, javascript
Go to the top of the page
+Quote Post
l0ud
post
Post #3





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


Nie ma sensu kombinować, po prostu zainteresuj się tymi odpowiednikami:
http://pl.php.net/manual/en/ref.mbstring.php


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
guitarnet.pl
post
Post #4





Grupa: Zarejestrowani
Postów: 74
Pomógł: 4
Dołączył: 7.03.2008

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


pod warunkiem ze ma dostep do modulu mbstring, a nawet jak ma to czyni to aplikacje malo "przenaszalna" na inne serwery


--------------------
Skrypty php, ajax, javascript
Go to the top of the page
+Quote Post
l0ud
post
Post #5





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


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...


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
zelu
post
Post #6





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

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


http://forum.php.pl/index.php?showtopic=119239
Go to the top of the page
+Quote Post
AxZx
post
Post #7





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


proponuję zapomnieć o CI i zainteresować się Kohana. tam jest cały zestaw funkcji dla utf8.


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Herezad
post
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 7.04.2009

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


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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 20:02