Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/01/2011, 22h12   #1
Invité de passage
 
Inscription : novembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 12
Points : 0
Points : 0
Par défaut php : tableau avec clés sans accent

Bonjour
J'ai une liste d'éléments tels que les suivants : mariage, paix, écologie, science, évêque.
Je voudrais les mettre dynamiquement dans un tableau associatif qui me servira à générer une liste déroulante dont les éléments seront triés dans l'ordre croissant. Pour ce faire je dois examiner le premier caractère de chaque élément et le remplacer par son équivalent non accentué quand il possède un accent.
J'ai donc créé un tableau de correspondance dans lequel j'ai :
Code php :
1
2
3
$replacement = array(
	"á" => "a",
	"é" => "e");
etc
J'examine chaque élément avec les instructions suivantes :
Code :
1
2
3
4
5
6
7
8
$car1=substr($element,0,1);
if(array_key_exists($car1, $replacement))
	{
                  $element1=$replacement['$car1'].substr($element,1);
                  $tableau["$element1"] = $element;
        }else{
                  $tableau["$element1"] = $element;
         }
Je rencontre ici deux problèmes :
1-je ne passe jamais dans la condition clé trouvée (par exemple pour écologie)
2-le tableau n'est pas construit avec des éléments dont la clé ne possède pas de caractère accentué.
Merci à qui pourra me dépanner
CapErquy
CapErquy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2011, 23h02   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
tu t'embêtes pour rien

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
	function desaccentuer($mot)
	{
		$a = array('à', 'ã', 'ä', 'â','@');
		$e = array('é', 'è', 'ë', 'ê');
		$i = array('ï','î','ì');
		$u = array('ü','ù','û');
		$o = array('ô','ö');
		$t = str_replace( $a,'a', $mot );
		$t = str_replace( $e,'e', $t );
		$t = str_replace( $i,'i', $t );
		$t = str_replace( $o,'o', $t );
		$t = str_replace( $u,'u', $t );
		return $t;
	}

le probleme de cette méthode c'est qu'elle est éminemment sensible à l'encodage de ton script et des données. Si ton script est encodé en utf8 et les données aussi, ça marche. Si l'un est en latin 1 et l'autre en utf8, ça ne marche pas.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 09h47   #3
Invité de passage
 
Inscription : novembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 12
Points : 0
Points : 0
Par défaut Tableau avec clés sans accent

Merci pour la réponse. Mon script est encodé en UTF_8. Par contre en ce qui concerne ma base l'interclassement est latin1_swedish_ci de même que le champ.
Est-ce bon ?
CapErquy
CapErquy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h27.


 
 
 
 
Partenaires

Hébergement Web