2010-04-01 6 views
0

i ont le code suivant:problème avec des guillemets doubles et entrée

<input type="text" value="<?php echo $_GET['msg']; ?>"> 

Cette entrée est automatiquement rempli avec le nom qui est writen dans la page précédente. Donc, si l'utilisateur a écrit: j'aime "pommes" et banane L'entrée sera brisée car elle va fermer le tag après les guillemets. Je sais que je peux éviter cela par html entiting la valeur, mais je ne veux pas cela, y at-il une autre solution ou y at-il un < < < EOD en html?

Merci

Répondre

2

Vous devez utiliser la fonction htmlspecialchars, pour échapper à la sortie pour HTML:

<input type="text" value="<?php echo htmlspecialchars($_GET['msg']); ?>"> 

Note: vous pourriez avoir à ajouter quelques additionnels paramètres, si vous ne l'utilisez ISO-8859-1 comme jeu de caractères; par exemple, UTF-8:

<input type="text" value="<?php echo htmlspecialchars($_GET['msg'], ENT_COMPAT, 'UTF-8'); ?>"> 
1

Une fonction ou une autre entraînera un problème.

je suis venu avec ce qui suit pour garder l'esperluette:

<input type="text" value="<?php echo parseString($_GET['msg']); ?>"> 
<?php 
function parseString($str) { 
    $result=str_replace('"','&quot;',$str); 
    $result=str_replace("'","&#39;",$result); 
    return $result; 
} 
+0

Je suis curieux de savoir pourquoi vous avez créé cette fonction au lieu d'utiliser le comme indiqué dans le précédent 'htmlspecialchars', intégré (correct) réponses. – Charles

Questions connexes