ugrás a tartalomhoz

iconv kérdés

salla · 2010. Nov. 5. (P), 18.59
Üdv!
Elkezdtem symfony-t tanulni, és felmerült egy olyan probléma, ami szerintem nem a keretrendszerhez köthető. A Jobeet tutorial egyik részlete tárgyalja a szép URL-ek készítését, nekem viszont nem működik a metódus, ami a címeket sluggá (van rá magyar szó?) alakítaná.
  1. public static function slugify($text)  
  2. {  
  3.     $text = preg_replace('#[^\\pL\d]+#u''-'$text); //replace non letter or digits by -  
  4.     $text = trim($text'-'); //trim  
  5.        
  6.     //transliterate  
  7.     if (function_exists('iconv')) {  
  8.         $text = iconv('utf-8''us-ascii//TRANSLIT'$text);  
  9.     }  
  10.        
  11.     $text = strtolower($text); //lowercase  
  12.     $text = preg_replace('#[^-\w]+#'''$text); //remove unwanted characters  
  13.       
  14.     if (emptyempty($text)) {  
  15.         return 'n-a';  
  16.     }  
  17.       
  18.     return $text;  
  19. }  
Itt gondolom a probléma az iconv-vel van (amiről egyébként a tutorial előtt nem is hallottam, szóval lehet, hogy ez értetlenkedésem oka), az "Árvíztűrő tükörfúrógép", "rvztr-tkrfrgp"-ként jelenik meg. Ellenben ha cli-ben futtatom, akkor tökéletesen működik. A két php.ini iconv szekciója ugyanaz, nem igazán értem hol lehet a probléma. Válaszaitokat előre is köszönöm.
 
1

Nekem megy

janoszen · 2010. Nov. 6. (Szo), 11.53
Biztos, hogy UTF-8-as karakterkódolással megy be a bemenet? Muti már egy linket a demó oldalra.
2

Elvileg ez a végeredmény:

salla · 2010. Nov. 6. (Szo), 12.27
Elvileg ez a végeredmény: http://jobbet.org. Ahogy látom itt sincs a függvény a helyzet magaslatán.
3

Megvan

janoszen · 2010. Nov. 6. (Szo), 13.57
Megvan a megoldás, a konzolban alapból UTF-8 localen működik a rendszer (már ha UTF-8-as a konzol), weben viszont nem. Szúrd be ezt a script elejébe:
  1. setlocale(LC_ALL, 'en_US.UTF8');  
Szerk: ha esetleg bajod van vele máshol (dátum), akkor csak az LC_CTYPE-ot állítsd át.
4

Köszönöm

salla · 2010. Nov. 6. (Szo), 14.19
Köszönöm a választ!