Caratères accentués provenant d'une base SQL

Résolu/Fermé
Pommesky - 29 oct. 2010 à 18:19
Wulfrik Messages postés 65 Date d'inscription jeudi 21 octobre 2010 Statut Administrateur Dernière intervention 22 mai 2014 - 29 oct. 2010 à 22:22
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

Wulfrik Messages postés 65 Date d'inscription jeudi 21 octobre 2010 Statut Administrateur Dernière intervention 22 mai 2014 10
29 oct. 2010 à 18:27
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 - https://www.php.net/manual/fr/function.utf8-decode.php
0
Merci beaucoup au final il faillait utilisé ut8_encode , j'ai pas compris pourquoi mais sa marche nickel !
0
Wulfrik Messages postés 65 Date d'inscription jeudi 21 octobre 2010 Statut Administrateur Dernière intervention 22 mai 2014 10
29 oct. 2010 à 22:22
De rien content d'avoir aidé
0