Autor Zpráva
Ben
Profil *
Ahoj, na odstranění diakritiky používám toto:
function odstran_diakritiku($in){
  $in = iconv("utf-8", "us-ascii//TRANSLIT", $in); 
  $in = strtolower($in); 
  $in = preg_replace('~[^a-z0-9_]+~', '-', $in); 
  $in = trim($in, "-"); 
  $out = preg_replace('~[^-a-z0-9_]+~', '', $in);
  return $out;
}

Funguje mi to skvěle, jen jediné, co se mi nedaří zakomponovat je při použití na jméno souboru, tak v tom prvním preg_replace chci zachovat v tom reguláru tečku a nenahrazovat jí pomlčkou. Čiliže například ze řetězce no photo.jpg mi to udělá no-photo-jpg. Pomůže mi prosím někdo s tím regulárem?
Alphard
Profil
  $in = preg_replace('~[^a-z0-9_.]+~', '-', $in);
  $in = trim($in, "-");
  $out = preg_replace('~[^-a-z0-9_.]+~', '', $in);

Ten druhý preg_replace se mi zdá stejně zbytečný.
__construct
Profil
Ben:
4.preg_replace('~[^a-z0-9_\.]+~', '-', $in);
6.preg_replace('~[^-a-z0-9_\.]+~', '', $in);
Edit:
Alphard:
en druhý preg_replace se mi zdá stejně zbytečný.
Jeho funkcia je trochu upravená funkcia Jakuba Vrány, ktorý ju tam má oprávnene — používa ju na odstránenie prebytočných znakov po konverzii na ASCII.
Alphard: Nie je treba ich escapovať - síce som k tomu nenašiel podklad, ale otestoval som. Ja escapujem regex znaky nejak automaticky, aj keď je to mnohokrát zbytočné.
Alphard
Profil
K tomu escapování, v tomto případě funguje to s \ i bez něj. Williams a Lane v PHP and MySQL uváděli, že tady není escapování nutné, ale týkalo se to ještě rodiny ereg. Na hledání současné specifikace jsem líný, ale jestli někdo máte po ruce odkaz, můžete napsat :-)
Ben
Profil *
Ano, je to upravená funkce od Jakuba Vrány. Jdu to vyzkoušet a zároveň se doučit reguláry. Díky :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: