Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Klasa / funkcja PHP zmieniajaca litery narodowe na podstawowe
Ciosek
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 31.01.2010

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


Witam.

Mozliwe ze troche skomplikowalem nazwe tematu wiec wyjasniam o co mi chodzi:

Szukam klasy/funkcji/skryptu/algorytmu PHP ktora zmieni litery narodowe na litery "podstawowe" tzn.:

ą -> a
ć -> c

Znalazlem jezyka polskiego jednak chodzi mi o wiekszasc ilosc jezykow (przede wszystkim: niemiecki, węgierski, francuski)

Moze jest cos takiego dla calego UTF-8?


Bede wdzieczny za wszelka pomoc.

Ten post edytował Ciosek 14.12.2012, 12:37:43
Go to the top of the page
+Quote Post
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Algorytm jest prosty. Dla PL byłoby to przykładowo coś zbliżonego do:

  1. $plLetters = 'ążśźęćńółĄŻŚŹĘĆŃÓŁ';
  2. $plLettersFixed = 'azsxecnolAZSXECNOL';
  3.  
  4. $string = str_replace(str_split($plLetters),str_split($plLettersFixed),$string);


Podobnie można załatwić resztę języków lecz trzeba napisać dla każdego literki specjalne.
Go to the top of the page
+Quote Post
rocktech.pl
post
Post #3





Grupa: Zarejestrowani
Postów: 587
Pomógł: 131
Dołączył: 8.02.2010

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


Witam.

  1. setlocale(LC_CTYPE, 'pl_PL');
  2. setlocale(LC_COLLATE, 'pl_PL');
  3.  
  4. echo iconv('UTF-8','ASCII//TRANSLIT//IGNORE','Ćmią');
  5.  
  6. setlocale(LC_CTYPE, 'fr_FR');
  7. setlocale(LC_COLLATE, 'fr_FR');
  8.  
  9. echo iconv('UTF-8','ASCII//TRANSLIT//IGNORE','République française');
Go to the top of the page
+Quote Post
sowiq
post
Post #4





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Z str_replace radzę uważać. Z UTF-8 będziesz miał niemałe problemy.

Polecam bardzo dobrą klasę z Doctrine: https://github.com/l3pp4rd/DoctrineExtensio...til/Urlizer.php

  1. echo Urlizer::unaccent($string)


Ten post edytował sowiq 14.12.2012, 14:35:05
Go to the top of the page
+Quote Post
piotrex41
post
Post #5





Grupa: Zarejestrowani
Postów: 168
Pomógł: 26
Dołączył: 15.09.2011
Skąd: Wrocław

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


Ja używam mojej funkcji. Wygląda ona tak:
  1. protected function title2url($string)
  2. {
  3. $unPretty = array('/ä/', '/ö/', '/ü/', '/Ä/', '/Ö/', '/Ü/', '/ß/',
  4. '/ą/', '/Ą/', '/ć/', '/Ć/', '/ę/', '/Ę/', '/ł/', '/Ł/' ,'/ń/', '/Ń/', '/ó/', '/Ó/', '/ś/', '/Ś/', '/ź/', '/Ź/', '/ż/', '/Ż/',
  5. '/Š/','/Ž/','/š/','/ž/','/Ÿ/','/Ŕ/','/Á/','/Â/','/Ă/','/Ä/','/Ĺ/','/Ç/','/Č/','/É/','/Ę/','/Ë/','/Ě/','/Í/','/Î/','/Ď/','/Ń/',
  6. '/Ň/','/Ó/','/Ô/','/Ő/','/Ö/','/Ř/','/Ů/','/Ú/','/Ű/','/Ü/','/Ý/','/ŕ/','/á/','/â/','/ă/','/ä/','/ĺ/','/ç/','/č/','/é/','/ę/',
  7. '/ë/','/ě/','/í/','/î/','/ď/','/ń/','/ň/','/ó/','/ô/','/ő/','/ö/','/ř/','/ů/','/ú/','/ű/','/ü/','/ý/','/˙/',
  8. '/Ţ/','/ţ/','/Đ/','/đ/','/ß/','/Œ/','/œ/','/Ć/','/ć/','/ľ/');
  9.  
  10. $pretty = array('ae', 'oe', 'ue', 'Ae', 'Oe', 'Ue', 'ss',
  11. 'a', 'A', 'c', 'C', 'e', 'E', 'l', 'L', 'n', 'N', 'o', 'O', 's', 'S', 'z', 'Z', 'z', 'Z',
  12. 'S','Z','s','z','Y','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','N',
  13. 'O','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e',
  14. 'e','i','i','i','i','n','o','o','o','o','o','o','u','u','u','u','y','y',
  15. 'TH','th','DH','dh','ss','OE','oe','AE','ae','u');
  16.  
  17. $permalink = strtolower(preg_replace($unPretty, $pretty, $string));
  18. return str_replace(' ', '-', preg_replace('/[^a-zA-Z0-9 ]/', '', $permalink) );
  19. }

Musiał byś sobie tylko dostosować, bo zamienia ona także spacje na myślniki. Poza tym, działa bez bardzo dobrze - testowana.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 18:40