[英]Escape double quotes of HTML attributes output by PHP
通常在編寫PHP時我會輸出一些像這樣的HTML -
echo "<a href="../" title="link title">".$link_text."</a>";
顯然這不會解析,因為我需要在<a>
元素的屬性中轉義雙引號。 是否有正則表達式會快速執行此操作而不是手動添加反斜杠?
另一件事 - 正則表達式不應該在標記之外轉義雙引號(例如我附加$link_text
變量的地方)。
有任何想法嗎?
你應該只使用單引號:
echo '<a href="../" title="link title">' . $link_text . '</a>';
我能提出的解決方案(並非沒有逃脫):
單引號
echo '<a href="../">' . $link_text. '</a>';
使用雙引號
echo "<a href='../'>$link_text</a>";
的sprintf
echo sprintf('<a href="../">%s</a>', $link_text);
使用HEREDOC
echo <<<EOF <a href="../">$link_text</a> EOF;
像smarty一樣使用模板引擎
退出PHP模式 :
?><a href="../"><?php echo $link_text ?></a><?php // other code...
順便說一句,一定要在$link_text
變量上使用htmlspecialchars()
,否則你將有一個XSS安全漏洞。
使用(這種語法不用擔心引號等)
echo <<<EOT
<a href="../" title="link title">$link_text</a>
EOT;
我強烈建議使用模板而不是嘗試構建字符串。
在原始PHP中:
<a href="../" title="link title"><?php echo $link_text; ?></a>
使用單引號或使用heredoc 。 我更喜歡最后一個。
我想你可以用
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>"
試試吧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.