Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]preg_replace i polskie znaki
Forum PHP.pl > Forum > Przedszkole
sirklima
Witam,

Wiem ze temat juz byl poruszany kilkukrotnie, jednak mam pytanie zwiazane z preg_replace i z polskimi znakami.

Obecnie uzywam takiego rozwiazania:

  1.  
  2. $seoname = iconv('UTF-8', 'ASCII//TRANSLIT', $title_ouput);
  3. $seoname = preg_replace( "/[^a-z0-1-]{1}/i", '-', $seoname );
  4. $seoname = preg_replace('/\@/',' at ',$seoname);
  5. $seoname = preg_replace('/\&/',' and ',$seoname);
  6. $seoname = preg_replace('/\s[\s]+/','-',$seoname); // Strip off multiple spaces
  7. $seoname = preg_replace('/[\s\W]+/','-',$seoname); // Strip off spaces and non-alpha-numeric
  8. $seoname = preg_replace('/^[\-]+/','',$seoname); // Strip off the starting hyphens
  9. $seoname = preg_replace('/[\-]+$/','',$seoname); // // Strip off the ending hyphens


Polskie znaki sa ladnie zamieniane, jednak pomiedzy znakami laduje "-"
Czyli dla przykladu: Jak się zabezpieczyć przed powodzią - otrzymuje "jak-si-e-zabezpieczy-c-przed-powodzi-a" a chcialbym "uzyskac jak-sie-zabezpieczyc-przed-powodzia"


Prosze o pomoc, jak ktos ma jakies pomysly.

Dziekuje




matiit
  1. function slugify($text)
  2. {
  3. // replace non letter or digits by -
  4. $text = preg_replace('~[^\\pL\d]+~u', '-', $text);
  5.  
  6. // trim
  7. $text = trim($text, '-');
  8.  
  9. // transliterate
  10. $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
  11.  
  12. // lowercase
  13. $text = strtolower($text);
  14.  
  15. // remove unwanted characters
  16. $text = preg_replace('~[^-\w]+~', '', $text);
  17.  
  18. if (empty($text))
  19. {
  20. return 'n-a';
  21. }
  22.  
  23. return $text;
  24. }


Źródło: http://stackoverflow.com/questions/2955251...slug-url-string
sirklima
Dziekuje bardzo, dziala.
matiit
Jesli używasz tego jako slug, pamiętaj, aby w bazie mieć pole slug jako unique i dbać jakoś o tę unikalnośc. Np. jeśli taki slug już jest, to dodajesz do niego randomową liczbę, a najlepiej id posta na koniec.
sirklima
Mam to jako Unique, bo oczywiscie nie moze sie powtarzac. Dzieki.
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.