Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1436 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Suppression accents d'un fichier UTF8 [RESOLU]

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Suppression accents d'un fichier UTF8 [RESOLU]

n°2306316
snike
Posté le 04-10-2017 à 15:37:00  profilanswer
 

Bonjour,
 
  Bien que ce cas soit discuter dans de nombreux sujets, je souhaite enlever les accents d'un fichier utf8.
  Le fichier d'origine "cadastre.qlr" est encodé en UTF8 sans BOM, mon script php pour remplacer les caractères accentués est également en UTF8 sans BOM.
 
Mon script

Code :
  1. $tmp=file_get_contents("data/cadastre.qlr" );
  2. $tmp2=remplace_caract_speciaux($tmp);
  3. file_put_contents("data/cadastre2.qlr",$tmp2);
  4. function remplace_caract_speciaux(&$in) {
  5. $search = array ('@[éèêëÉÊË]@i','@[àâäÂÄ]@i','@[îïÎÏ]@i','@[ûùüÛÜ]@i','@[ôöÔÖ]@i','@[ç]@i');
  6. $replace = array ('e','a','i','u','o','c');
  7. return preg_replace($search, $replace,$in);
  8. }


 
Le fichier cadastre2.qlr est également encodé en UTF8 sans BOM
 
Par contre le mot étiquettes devient eetiquettes
 
 
Merci par avance.


Message édité par snike le 06-06-2018 à 08:25:51
mood
Publicité
Posté le 04-10-2017 à 15:37:00  profilanswer
 

n°2306317
pluj
Posté le 04-10-2017 à 16:07:50  profilanswer
 

Il manque le modificateur u à tes motifs.
 

Code :
  1. $search = array ('@[éèêëÉÊË]@iu','@[àâäÂÄ]@iu','@[îïÎÏ]@iu','@[ûùüÛÜ]@iu','@[ôöÔÖ]@iu','@[ç]@iu');


 
Et i n'est pas utile si dans ta classe tu mets déjà le caractère avec les 2 casses.
 
Toutefois, pour faire ça proprement, je te recommande l'usage de l'extension intl (la classe Transliterator en particulier qui existe depuis PHP 5.4.0) :

Code :
  1. function remplace_caract_speciaux($in) {
  2.    return transliterator_create('NFD; [:Nonspacing Mark:] Remove; NFC')->transliterate($in);
  3. }


Ou si tu l'utilises beaucoup dans un même script :

Code :
  1. function remplace_caract_speciaux($in) {
  2.    static $translit = NULL;
  3.  
  4.    if (is_null($translit)) {
  5.        $translit = transliterator_create('NFD; [:Nonspacing Mark:] Remove; NFC');
  6.    }
  7.  
  8.    return $translit->transliterate($in);
  9. }


 
Et pas besoin d'une référence sur ton paramètre, surtout si $in n'est pas modifié.


Message édité par pluj le 04-10-2017 à 16:13:10
n°2306318
snike
Posté le 04-10-2017 à 16:25:10  profilanswer
 

Bonjour,
 
  Ça marche mieux, un grand merci.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Suppression accents d'un fichier UTF8 [RESOLU]

 

Sujets relatifs
macro qui me renvoie le nom et le chemin d'un fichierFormulaire d'envoi de fichier
SAP SQL Importer un fichier excel[PRC]Ouvrir un fichier au format PRC?
Nommer un fichier aléatoirementCréation d'un fichier avec signature MD5 définie
Copie et suppression dossier FTP tout les jourssuppression de fichier impossible
Inclusion complète d'un fichier 
Plus de sujets relatifs à : Suppression accents d'un fichier UTF8 [RESOLU]


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR