2010-06-08 10 views
1

Est-il possible d'afficher les codes de caractères HTML stockés dans un champ de texte dans SQL dans une zone de texte sans les afficher comme caractère approprié? je ne étais pas & pour apparaître comme & amp; (La façon dont il est stocké dans la table). Ou est-ce un moyen que je devrais stocker le HTML, donc je n'aurai pas besoin de m'inquiéter à ce sujet?Empêcher le rendu des codes de caractères HTML dans la zone de texte

(site utilise PHP)

+0

Désolé, votre typo rend la question peu claire: Votre base de données stocke "&" et vous voulez que "&" apparaisse dans la zone de texte, ou que votre base de données stocke "&" et que "&" s'affiche? – deceze

Répondre

0

En PHP, vous pouvez utiliser la fonction htmlspecialchars (http://php.net/manual/en/function.htmlspecialchars.php):

<?php 
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES); 
echo $new; 
?> 

et il rendra:

&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt; 

si vous voulez les décoder retour vous utilisez simplement la fonction htmlspecialchars_decode

<?php 
$str = '<p>this -&gt; &quot;</p>'; 

echo htmlspecialchars_decode($str); 

// note that here the quotes aren't converted 
echo htmlspecialchars_decode($str, ENT_NOQUOTES); 
?> 
+0

Merci, j'avais déjà compris cela quelques minutes après avoir posté la question, mais merci pour la réponse. – seanmetzgar

0

Ce dont vous parlez s'appelle HTML Encoding; chaque langage moderne a une facilité dans sa bibliothèque, comme la fonction htmlspecialchars en PHP. Pour plus d'informations PHP, voir this SO question.

Vous devez également vous assurer que vous êtes correctement désinfecter les entrées, même contre plusieurs tours de décodage HTML; sinon, vous serez vulnérable aux attaques CSS (Cross Site Scripting).