• [^] # Re: saloperie de charset.

    Posté par . En réponse au journal Charsets multiples et systèmes de fichiers multiples. Évalué à 1.

    En PHP, mais l'algorythme doit pouvoir etre traduit facilement :

    $origCharset = 'ISO-8859-1' ;

    // convert string to html
    $fileName = strtolower(htmlentities($fileName, ENT_QUOTES, $origCharset)) ;

    // remove '
    $spcChars = explode( '|', ''|$') ;
    $repChars = explode( '|', '-|-' ) ;
    $fileName = str_replace($spcChars,$repChars, $fileName) ;

    // convert some special chars. can be extended and perfected, more chars, localization, etc.
    $spcChars = explode( '|', 'æ|œ|&|·|@|€|£|$|©|®') ;
    $repChars = explode( '|', 'ae|oe|-and-|.|-at-|euro|pound|dollar|copyright|rights' ) ;
    $fileName = str_replace($spcChars,$repChars, $fileName) ;

    // remove accents
    $fileName = preg_replace('/&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron);/','1ドル',$fileName) ;

    // convert special chars
    $fileName = preg_replace('/&([a-z]+);/','1ドル',$fileName) ;

    // replace illegal chars with '-'
    $fileName = preg_replace('/[^a-z0-9\.\-]/', '-', $fileName) ;

    // replace multiple '-'
    $fileName = preg_replace('/-+/','-',$fileName) ;

    // replace end and begin '-'
    $fileName = preg_replace('/(-$|^-)/','',$fileName) ;

    En sortie, tu as par exemple :
    - Fichier copié.jpg => fichier-copie.jpg
    - Ventes & Prévisions.doc => ventes-and-previsions.doc
    - Essai 2005 ®.xls => essai-2005-rights.xls
    - Stædler.ppt => staedler.ppt
    - ...

    Bien sur, tu peux faire quelques adaptations, comme traduire & par et au lieu de and, etc...