Échapper les guillemets doubles des attributs HTML de sortie en PHP
Souvent lors de l'écriture de PHP, je vais l'avoir sortie HTML comme ceci -
echo "<a href="../" title="link title">".$link_text."</a>";
Évidemment, ce ne sera pas parse que j'ai besoin d'échapper les guillemets dans les attributs de la <a>
élément. Est-il un regex qui serait rapidement faire cela plutôt que de m'ajouter manuellement les barres obliques inverses?
Une autre chose - la regex ne devrait pas échapper les guillemets doubles à l'extérieur de la balise (par exemple lorsque j'ai ajouté la $link_text
variable.
Des idées?
OriginalL'auteur Phil | 2009-07-08
Vous devez vous connecter pour publier un commentaire.
Vous devriez utiliser des guillemets simples au lieu:
Je suis en désaccord avec htmlspecialchars inline lors de l'impression, le temps que vous imprimez tous les arguments doivent déjà être propre.
de toute façon, @joebert, htmlspecialchars doit être utilisé avant l'impression 🙂
Merci - regarde, comme le passage à apostrophes est simple (et éventuellement plus rapide?) solution. Aussi, sont conscients de la préoccupation au sujet de nettoyage de sortie à l'aide de htmlspecialchars(). Je suis parti de l'exemple de code pour plus de clarté.
oui, sans doute les guillemets simples de la méthode la plus rapide
OriginalL'auteur Greg
Solutions que je peux venir avec (non sans échapper):
Guillemets simples
D'utiliser des guillemets
Sprintf
Utilisation HEREDOC
Utiliser le moteur de modèle comme smarty
Sortie PHP-mode:
BTW, assurez-vous d'utiliser
htmlspecialchars()
sur$link_text
variable, ou vous aurez un XSS trou de sécurité.lol pourquoi 'echo sprintf' utiliser juste 'printf' 😉
OriginalL'auteur Maciej Łebkowski
Utilisation (Cette syntaxe ne vous inquiétez pas à propos de citations etc)
désolé de mon erreur
OriginalL'auteur
J'avais suggèrent fortement à l'aide de gabarits au lieu d'essayer de construire des chaînes de caractères.
En raw PHP:
OriginalL'auteur Quentin
utilisez des guillemets simples ou utiliser heredoc. Je préfère la dernière.
OriginalL'auteur F0G
Je pense que vous pouvez utiliser
essayer.
OriginalL'auteur user1600211