Caratères accentués provenant d'une base SQL [Résolu/Fermé]

Signaler
-
Wulfrik
Messages postés
65
Date d'inscription
jeudi 21 octobre 2010
Statut
Administrateur
Dernière intervention
22 mai 2014
-
Bonjour,
J'utilise la fonction suivante pour savoir si une valeur saisit par l'utilisateur contient uniquement les caractères autorisés :
(preg_match("/[^".$caracteres."]/", $valeur))


la variable $caracteres est en fait une case d'une table sql qui contient "a-z,A-Z,0-9,é,è" j'ai raccourcis la liste des accents pour l'exemple.
Ma table est encodé en utf8.
Mais lorsque j'utilise cette fonction dès qu'un "é" ou un "è" est présent dans la valeur, le preg_match ne le considère pas comme autorisé.
Je pense que cela est dut au fait que les caractères accentué provenant de ma base ne sont pas vu réellement comme tel mais comme des &e acute ou je ne sait quoi.
Quand j'attribut directement sa valeur a $caracteres dans mon programme comme ceci, tout marche comme il faut :
$caracteres= "a-z,A-Z,0-9,é,è"

Comment dois-je faire pour que les caractères provenant de ma base soit réellement vu comme tel.

2 réponses

Messages postés
65
Date d'inscription
jeudi 21 octobre 2010
Statut
Administrateur
Dernière intervention
22 mai 2014
10
Essaye les fonctions de cast ou de décodage de code html

si tu es en php

html_entity_decode - http://www.php.net/manual/fr/function.html-entity-decode.php

ou

utf8_decode - http://php.net/manual/fr/function.utf8-decode.php
Merci beaucoup au final il faillait utilisé ut8_encode , j'ai pas compris pourquoi mais sa marche nickel !
Wulfrik
Messages postés
65
Date d'inscription
jeudi 21 octobre 2010
Statut
Administrateur
Dernière intervention
22 mai 2014
10
De rien content d'avoir aidé