[PHP] konwersja polskich znaków do łaćińskich odpowiedników, czyli zmina 'ą' na 'a', 'ć' na 'c', it |
[PHP] konwersja polskich znaków do łaćińskich odpowiedników, czyli zmina 'ą' na 'a', 'ć' na 'c', it |
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: 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ł.
|
|
|
24.07.2008, 13:56:06
Post
#2
|
|
Grupa: Zarejestrowani Postów: 875 Pomógł: 122 Dołączył: 2.02.2008 Ostrzeżenie: (0%) |
Było już milion razy... poszukaj...
|
|
|
19.08.2008, 14:01:48
Post
#3
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 35 Dołączył: 5.12.2006 Skąd: Wrocław Ostrzeżenie: (0%) |
Wtedy nie udało mi się znaleźć tego "milion razy". Jednak jakiś czas potem pojawił się temat gdzie problem został rozwiązany (post: http://forum.php.pl/php_Jak_stworzyc_funkc...ie_t100607.html).
Dzięki pomysłom (przykładom) przedstawionym przez uczestników tamtej dyskusji napisałem następującą funkcję:
Funkcja transformuje przekazany string ($str) do postaci złożonej tylko i wyłącznie z standardowych liter [a-z], cyfr [0-1] oraz znaków _ i -. Wielokrotne połączenie _ lub - będzie zredukowane do jednego znaku (odpowiednio _ lub -). Jeżeli drugi parametr ($strtolower) będzie ustawiony jako true (domyślna wartość) funkcja zmieni wielkość wszystkich liter na małe. W przeciwnym wypadku wielkość liter nie ulegnie zmianie. Przykładowe użycie
da następujący efekt Kod ąęśćłńóżźßüöäëáéíúçèîôàâêûùïñ------____ aesclnozzssuoaeaeiuceioaaeuuin-_ Uwaga: wszystkie znaki zostaną pozbawione ogonków, akcentów i 'umlałtów'. Niemieckie 'ß' zostanie zamienione na 'ss' i zawsze będą to małe litery. -------------------- Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
|
|
|
6.01.2009, 00:37:11
Post
#4
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 1 Dołączył: 31.03.2006 Ostrzeżenie: (0%) |
Pozwoliem sobie usprawnic powyzsza funkcje.
przykładowe użycie:
da wynik
podczas gdy poprzednia funkcja dawała
generalnie oczyscilem troche kod i poprawilem blad w wyrazeniu regularnym. Dodatkowo jako zmienna $replace podajemy dowolny znak na jaki ma byc uzyty w zastepstwie. |
|
|
25.01.2011, 23:46:36
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 25.01.2011 Ostrzeżenie: (0%) |
zabrakło jednego znaku w preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($str)) |
|
|
20.06.2012, 12:21:26
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 10.05.2012 Ostrzeżenie: (0%) |
Od PHP 5.3 pojawia się następujący błąd: Deprecated: Function ereg_replace() is deprecated Funkcja teraz działa prawidłowo.
|
|
|
20.06.2012, 12:23:36
Post
#7
|
|
Newsman Grupa: Moderatorzy Postów: 4 005 Pomógł: 548 Dołączył: 7.04.2008 Skąd: Trzebinia/Kraków |
aleś odgrzebał kotleta...
-------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 10.06.2024 - 21:03 |