Logo du forum
 

Forum TTH-News

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » [PHP] » [Résolu] Lettres accentuées
Login Mot de passe

2 visiteurs sur ce topic (0 membre(s), 2 invité(s) )


Auteur
Sujet : [Résolu] Lettres accentuées
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 25-05-2008 @ 15:32      Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Bonjour,

J'essaye de substituer des lettres accentuées par des lettres non accentuées.

J'utilise donc cette fonction.

Code :


function sans_accents($str_accent) {
$pattern = Array("/é/", "/è/", "/ê/", "/ç/", "/à/", "/â/", "/î/", "/ï/", "/ù/", "/ô/");
$rep_pat = Array("e", "e", "e", "c", "a", "a", "i", "i", "u", "o");
$str_noacc = preg_replace($pattern, $rep_pat, $str_accent);
return $str_noacc;
}





Code :

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

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

Code :

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

---> me renvoie bien ahe.aberwag

Par contre
Code :

$userssaccents = sans_accents($user);

me renvoie ahé.aberwag

Où est mon erreur ?

Merci bien

[message édité le 27-05-2008 @ 16:11 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
[KdZ'] ®
Sage
Membre # 4178

 
Lieu : La Baule (44-FR)

Messages :
1744 (0.31 par jour)


Score :

Message du 27-05-2008 @ 2:35   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Salut ;)

Pb de charset utilise plutôt mb_strtolower et défini l'encodage dans le second paramètre.

ex, pour utf8 :

Code :

$user = str_replace( "'", "", mb_strtolower("ahé.aberwag",'utf-8' ));


----------
[BOOKMARK TTH] | Ajouter un site
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 27-05-2008 @ 8:57   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Merci [KdZ'] pour cette fonction.

Je vais tester.
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 27-05-2008 @ 12:47   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

A priori, cela ne fonctionne pas. Le problème ne vient pas des minuscules.

Code :


while (($data = fgetcsv($handle, 1000, ";")) !== FALSE)
{
$num = count ($data);
$firstname = str_replace( "'", "", $data[1]);
$str = sans_accents($firstname);
}



L'echo sur $str me renvoie toujours les lettres accentuées.


----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -
zorgh
Master
Membre # 7668

 Avatar du membre
Lieu : FRANCE

Messages :
869 (0.16 par jour)


Score :

Message du 27-05-2008 @ 16:10   Site personnel   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

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 :


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



[message édité le 27-05-2008 @ 16:14 Par zorgh]
----------
Toshiba M30X-125 Intel Centrino PM 1,7 Ghz - 1 Go DDR - DD 60 Go - 15,4"W TFT - Ati Radeon 9700
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2010

Valid XHTML 1.0 Transitional

Page générée en 0.04 secondes