Page 1 sur 1

htmlspecialchars_decode

Posté : 15 août 2008, 13:34
par Dom!
Bonjour,

Je dois mettre sur mon site des plans que je récupere sur googlemap.
J'insere donc dans ma base sql le plan comme ceci :

Code : Tout sélectionner

$plan1 = htmlspecialchars("$plan", ENT_QUOTES);
J'affiche mon plan de la façon suivante :

Code : Tout sélectionner

echo htmlspecialchars_decode($str, ENT_NOQUOTES);
Mon probléme est que la Fonction htmlspecialchars_decode ne semble pas reconnu...
voici le message d'erreur :

Call to undefined function: htmlspecialchars_decode()

Pourriez vous m'aider à résoudre le probléme afin que mon plan s'affiche ?
Merci d'avance

Posté : 15 août 2008, 19:34
par Hywan
Hey :),

Tu es sûr d'avoir ce message d'erreur là ? Car cette fonction existe.

Posté : 15 août 2008, 19:45
par Dom!
Oui oui j'ai cette erreur ! de plus en local avec easyphp ca fonctionne...
Personne n'a eu ce probleme ?

Arf

Posté : 15 août 2008, 19:46
par Hywan
Est-ce qu'on peut voir le code (avec les lignes précédentes et suivantes, pas seulement la ligne concernée) ? Parce que là, j'ai un doute …

Posté : 15 août 2008, 19:52
par Dom!
et voici :
   <?php 
			
	if (isset($cp) == "")
		$cp = '06800';
			
	if (isset($id) == '')
		$salle = '';
	else
		$salle = ' and id = '.$id;
	
	$sqldip = 'select * from tb_salles where cp = '.$cp.$salle.' order by nom';
   // $nbsql += 1;
	if ($resselectdip = mysql_query($sqldip)) {
         while ($selectdip = mysql_fetch_array($resselectdip))
         {	
		 $plan = $selectdip["plan"];
		 $plan1 = htmlspecialchars_decode("$plan", ENT_NOQUOTES);

		 
            echo '<hr><p align="left"><span class="textes">'.$selectdip["nom"].'</span><br>';
			echo '<span class="parag">'.$selectdip["adresse"].'</span><br>';  
           echo '<span class="parag">'.$selectdip["cp"].' '.$selectdip["ville"].'</span><br><br>';

			if ($selectdip["responsable"] != "") echo '<span class="parag">'.$selectdip["responsable"].'<br>';
			if ($selectdip["tel"] != "") echo '<span class="parag">Tel: '.$selectdip["tel"].'</span><br><br>';  
			if ($selectdip["plan"] != "")  echo $plan1.'<br>';  
			if ($selectdip["infos"] != "") echo '<br><span class="parag">'.$selectdip["infos"].'</span><br>';  
			echo '<br><br></p>';
	}
}
?>
Merci pour ton aide ...

Posté : 15 août 2008, 19:59
par Hywan
Que te donne le code :
var_dump(function_exists('htmlspecialchars_decode'));
(à placer n'importe où).

Au passage, tu peux écrire $plan et pas "$plan", ce sera pareil, mais en plus rapide ;-).

Posté : 15 août 2008, 20:23
par Dom!
Ceci me donne le message suivant :

Code : Tout sélectionner

bool(false) Fatal error: Call to undefined function: htmlspecialchars_decode() in /home/uscagnes/public_html/salles.php on line 271
????

Posté : 15 août 2008, 23:34
par Hywan
Bien, si tu as la valeur de retour false, cela signifie que la fonction n'existe pas. La première solution (la plus simple) c'est que tu travailles sur une version de PHP qui est inférieure à la version 5.1.0. Pour le vérifier :
var_dump(phpversion());

Posté : 15 août 2008, 23:41
par Dom!
Ce qui me donne :

string(5) "4.4.8"


Ce qui veut surement dire que la version est 4.4.8 ?

Comment faire pour faire fonctionner l'affichage de mon plan ???

Merci !

Posté : 15 août 2008, 23:50
par Hywan
Bah tu peux te faire ta propre fonction. Elle est pas très compliquée celle-là.

Si tu regardes la documentation de la fonction htmlspecialchars(), il est dit :
Les remplacements effectués sont :

"&" (et commercial) devient "&"
""" (guillemets doubles) devient """ lorsque ENT_NOQUOTES n'est pas utilisée.
"'" (guillemet simple) devient "'" uniquement lorsque ENT_QUOTES est utilisée.
"<" (inférieur à) devient "<"
">" (supérieur à) devient ">"
Je pense que faire l'inverse doit être réalisable ;-).

Édition : tu remarqueras que je t'ai juste fait écrire 2 lignes de code. La première servant à vérifier que la fonction existe (pas une autre erreur de syntaxe ou de truc bizarre). On a vu que non, alors on regarde dans le manuel, et on voit que la fonction n'est présente que depuis PHP 5.1.0, donc on regarde la version de PHP et on est fixé :).
Ça doit être un réflexe ce genre de test.

Posté : 16 août 2008, 07:40
par AB
Une alternative avec le même principe serait d'utiliser htmlentities() puis html_entity_decode() en lieu et place de htmlspecialchars() et htmlspecialchars_decode() car html_entity_decode() est supportée à partir de PHP 4 >= 4.3.0

Sinon bon faudrait penser à passer à php5 un jour ou l'autre :wink:

Posté : 16 août 2008, 11:10
par Dom!
Effectivement en utilisant htmlentities() puis html_entity_decode() ca fonctionne ....

merci pour votre aide.... affaire classée..... :D