Échapper à des guillemets doubles des attributs HTML sortie par PHP
Question
Souvent, lors de l'écriture PHP je l'ai sortie du code HTML comme ceci -
echo "<a href="../" title="link title">".$link_text."</a>";
Il est évident que ce ne sera pas analyser comme je l'ai besoin pour échapper aux guillemets doubles dans les attributs de l'élément de <a>
. Y at-il une expression régulière qui rapidement faire plutôt que de me ajouter manuellement les anti-slash?
Une autre chose -. L'expression rationnelle ne doit pas échapper à des guillemets doubles en dehors de l'étiquette (par exemple où j'ai apposé la variable $link_text
Toutes les idées?
La solution
Vous devez juste utiliser à la place les guillemets simples:
echo '<a href="../" title="link title">' . $link_text . '</a>';
Autres conseils
Solutions Je peux trouver (non sans échapper):
-
Les guillemets simples
echo '<a href="../">' . $link_text. '</a>';
-
Utilisez des guillemets doubles
echo "<a href='../'>$link_text</a>";
-
sprintf
echo sprintf('<a href="../">%s</a>', $link_text);
-
Utilisez heredoc
echo <<<EOF <a href="../">$link_text</a> EOF;
-
Utilisez le moteur de template comme Smarty
-
Quitter PHP-mode :
?><a href="../"><?php echo $link_text ?></a><?php // other code...
BTW, assurez-vous d'utiliser htmlspecialchars()
sur variable $link_text
, ou vous aurez un trou de sécurité XSS.
Utilisation (Cette syntaxe ne vous inquiétez pas des citations, etc.)
echo <<<EOT
<a href="../" title="link title">$link_text</a>
EOT;
Je suggère fortement l'utilisation templating au lieu d'essayer de construire des chaînes.
En PHP brut:
<a href="../" title="link title"><?php echo $link_text; ?></a>
utiliser des guillemets simples ou utilisez heredoc . Je préfère le dernier.
Je pense que vous pouvez utiliser
http://www.example.com/.../Learning-Tutorials/ACTIVE-USER-ACCOUNT/verify.php?email='.$email.'&hash='.$hash.'
"<a href="//www.example.com/.../Learning-Tutorials/ACTIVE-USER-ACCOUNT/verify.php?email="$email&hash=$hash>Click Here to Active</a>"
essayer.