Bonjour,
j'ai quelques soucis avec les caractères spéciaux dans un de mes scripts AJAX!. Je sais que la question a été posée de nombreuses fois mais toutes les solutions que j'ai trouvées n'ont pas fonctionné chez moi!
Voila l'exemple qui fait planté mon script :
J'ai un de nom de société qui est Test'&é
Après moult expérimentations, j'ai trouvé une solution horrible qui consiste a encodé en UTF8 puis à utiliser la fonction htmlspecialchars (la fonction htmlentites ne donne pas de bons résulats)... C'est assez moche.
Connaissez vous une solution plus stylé pour résoudre ce problème?
Enfin, j'aimerais savoir s'il est judicieux de transformer les données provenant d'un formulaire en utilisant la fonction htmlentities avant de les stocker dans une base de données?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 if ( isset($_POST) && !empty($_POST) && isset($_POST['adh_id']) && $_POST['adh_id'] != "" ) { require_once "include/class/member.class.php"; require_once "include/class/company.class.php"; $itp_memb = new member(); $itp_memb->initMemberFromDB($_POST['adh_id']); $itp_soc = new company(); $itp_soc->initCompanyFromDB($itp_memb->getSocID()); $xml = '<?xml version="1.0"?>'; $xml .= '<company>'; $xml .= '<member>' . $itp_memb->getMail() . '</member>'; $xml .= '<id>' . $itp_soc->getID() . '</id>'; $xml .= '<name>' . htmlspecialchars(utf8_encode($itp_soc->getName()), ENT_QUOTES) . '</name>'; $xml .= '<type>' . htmlspecialchars(utf8_encode(constant($itp_soc->getSocTypeName())), ENT_QUOTES) . '</type>'; $xml .= '<adress>' . htmlspecialchars(utf8_encode($itp_soc->getAdress()), ENT_QUOTES) . '</adress>'; $xml .= '<adressplus>' . htmlspecialchars(utf8_encode($itp_soc->getAdressPlus()), ENT_QUOTES) . '</adressplus>'; $xml .= '<city>' . htmlspecialchars(utf8_encode($itp_soc->getCity()), ENT_QUOTES) . '</city>'; $xml .= '<zip>' . $itp_soc->getZip() . '</zip>'; $xml .= '<country>'. $itp_soc->getCountryID() . '</country>'; $xml .= '</company>'; header('Content-Type: text/xml'); echo $xml; }
Merci
PS : j'ai testé la solution des headers, de la fonction mb_convert_encoding, ...
Partager