Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] konwersja polskich znaków do łaćińskich odpowiedników, czyli zmina 'ą' na 'a', 'ć' na 'c', it
barthpl
post 24.07.2008, 13:00:08
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


witam,

Czy ktoś ma może pomysł/wiedzę w jaki sposób dokonać konwersji polskich znaków do ich łacińskich odpowiedników. Znaczy się aby we wskazanym stringu wszystkie wystąpienia 'ą' zamienić na 'a' i tak ze wszystkimi polskimi znakami.

Mój obecny pomysł to:
  1. <?php
  2. $arg1 = array('ą', 'Ą', 'ć', 'Ć', 'ę', 'Ę', 'ł', 'Ł', 'ń', 'Ń', 'ó', 'Ó', 'ś', 'Ś', 'ź', 'Ź', 'ż', 'Ż' );
  3. $arg2 = array('a', 'a', 'c', 'c', 'e', 'e', 'l', 'l', 'n', 'n', 'o', 'o', 's', 's', 'z', 'z', 'z', 'z' );
  4. $out = str_replace ( $arg1, $arg2, $str );
  5. ?>

Osobiście mi się to nie bardzo podoba i szukam czegoś bardziej automatycznego.

Podobną zamianę chciałbym dokonać na literkach francuskich i niemieckich. Wszelkie pomysły mile widziane. Z góry dzięki.

Ten post edytował boguszewski 24.07.2008, 13:34:47


--------------------
Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
dEF
post 6.01.2009, 00:37:11
Post #2





Grupa: Zarejestrowani
Postów: 15
Pomógł: 1
Dołączył: 31.03.2006

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


Pozwoliem sobie usprawnic powyzsza funkcje.
  1. <?php
  2. function str2url( $str, $replace = "-" )
  3.    {
  4.        // konwersja znaków utf do znaków podstawowych;
  5.        $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
  6.  
  7.        // Niektóre francuskie i niemieckie litery pozostawiają po takiej konwersji (jak powyżej)
  8.        // dodatkowe znaki. Poniższe dwie linijki te znaki wycinają;
  9.        $charsArr =  array( '^', ''', '"', '`', '~');
  10.        $str = str_replace( $charsArr, '', $str );
  11.  
  12.        $return = trim(ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9s]/','',strtolower($str))));
  13.        return str_replace(' ', $replace, $return);
  14.    }
  15. ?>

przykładowe użycie:
  1. <?php
  2. $str = "Dziesięć filmów, których nie możesz przegapić w 2009 roku!";
  3. echo $str;
  4. echo str2url($str);
  5. echo str2url($str, '_');
  6. ?>

da wynik
  1. Dziesięć filmów, których nie możesz przegapić w 2009 roku!
  2. dziesiec-filmow-ktorych-nie-mozesz-przegapic-w-2009-roku
  3. dziesiec_filmow_ktorych_nie_mozesz_przegapic_w_2009_roku

podczas gdy poprzednia funkcja dawała
  1. dziesiec_filmow_ktorych_nie_mozesz_przegapic_w_00_roku_

generalnie oczyscilem troche kod i poprawilem blad w wyrazeniu regularnym.
Dodatkowo jako zmienna $replace podajemy dowolny znak na jaki ma byc uzyty w zastepstwie.
Go to the top of the page
+Quote Post

Posty w temacie


Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 13:27