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?

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; 
}
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?


Merci

PS : j'ai testé la solution des headers, de la fonction mb_convert_encoding, ...