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

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Lettres accentuées et substitution

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Lettres accentuées et substitution

n°1736771
sneakz
Posté le 25-05-2008 à 15:34:50  profilanswer
 

Bonjour,
 
J'essaye de substituer des lettres accentuées par des lettres non accentuées.
 
J'utilise donc cette fonction.
 

Code :
  1. function sans_accents($str_accent) {
  2.    $pattern = Array("/é/", "/è/", "/ê/", "/ç/", "/à/", "/â/", "/î/", "/ï/", "/ù/", "/ô/" );
  3.    $rep_pat = Array("e", "e", "e", "c", "a", "a", "i", "i", "u", "o" );
  4.    $str_noacc = preg_replace($pattern, $rep_pat, $str_accent);
  5.    return $str_noacc;
  6. }


 
 
 

Code :
  1. $user = str_replace( "'", "", strtolower(substr($data[1],0,3).".".$data[0]));

 --> me renvoie la chaine de caractères à traiter soit ahé.aberwag
 

Code :
  1. $userssaccents = sans_accents('ahé.aberwag');

 ---> me renvoie bien ahe.aberwag
 
Par contre

Code :
  1. $userssaccents = sans_accents($user);

me renvoie ahé.aberwag
 
Où est mon erreur ?
 
Merci bien


Message édité par sneakz le 27-05-2008 à 16:13:35
mood
Publicité
Posté le 25-05-2008 à 15:34:50  profilanswer
 

n°1736799
masterpsx
Aigloun foutougrafe
Posté le 25-05-2008 à 17:53:11  profilanswer
 

Je vois pas trop d'ou sort ton $username puisque dans ton exemple c'est $user mais si $user ou $usermane est traité avant par un htmlentities() par exemple, tes accents sont alors au format d'entités html, c'est donc normal que ta fonction ne marche plus.
 
Tu peut essayer d'ajouter html_entity_decode() simplement comme ça si ta version de PHP est superieur à la 4.3.0 :

Code :
  1. $userssaccents = sans_accents(html_entity_decode($username));

n°1736819
sneakz
Posté le 25-05-2008 à 19:01:35  profilanswer
 

Merci masterpsx, je vais tester.
 
C'est bien $userssaccents = sans_accents($user); et non $userssaccents = sans_accents($username); qu'il faut lire. Je vais corriger.

n°1736827
sneakz
Posté le 25-05-2008 à 19:12:54  profilanswer
 

Je n'ai pas de changement.
 

Code :
  1. while (($data = fgetcsv($handle, 1000, ";" )) !== FALSE)
  2.   {
  3.    $num = count ($data);
  4.        $user = str_replace( "'", "", strtolower(substr($data[1],0,3).".".$data[0]));
  5.        $user = str_replace(' ', '', $user); // suppression des espaces
  6.        $userssaccents = sans_accents(html_entity_decode($user));
  7.        echo $userssaccents;
  8.        echo sans_accents('ahé.elghalbzouri');
  9.        break;


 
ahé.elghalbzouri (premier echo)  ahe.elghalbzouri (deuxième echo)

n°1737832
sneakz
Posté le 27-05-2008 à 16:12:23  profilanswer
 

J'ai contourné  le problème en indiquant les lettres accentuées avec leur valeur héxadécimale dans l’encodage ISO-8859-1.
 

Code :
  1. function sans_accents($str_accent) {
  2.    $pattern = Array("/[\xe8-\xeb]/", "/[\xe0\-\xe5]/", "/[\xec-\xef]/", "/[\xf9-\xfc]/", "/[\xf2-\xf6]/",);
  3.    $rep_pat = Array("e", "a", "i", "u", "o" );
  4.    $str_noacc = preg_replace($pattern, $rep_pat, $str_accent);
  5.    return $str_noacc;
  6. }


Message édité par sneakz le 27-05-2008 à 16:13:10

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

  [Résolu] Lettres accentuées et substitution

 

Sujets relatifs
[Resolu] Enregistrer un fichier sous.....[résolu] supprimer liens deja visités en arrivant sur le site
[RESOLU] Récupérer des valeurs par une requête ldap_search[RESOLU] Enregistrement d'images
Condition d'exclusion avec not in(résolu par.... moi)[RESOLU]Requête multiple ... avant petage de plomb
[RESOLU] expression régulière[Résolu]Authentification par JDBC Realm
[Résolu] MIME type[Résolu] lecture fichier ruby!
Plus de sujets relatifs à : [Résolu] Lettres accentuées et substitution


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