【问题标题】:Escape double quotes with variable inside HTML echo [duplicate]在 HTML 回显中使用变量转义双引号 [重复]
【发布时间】:2014-01-04 12:54:15
【问题描述】:

对于包含 HTML 的 echo 中的变量,我应该在哪里添加斜杠来转义双引号?

例子:

echo "<input type=\"hidden\" name=\"id\" value=".$row['id']." />";

这部分:

value=".$row['id']."

【问题讨论】:

  • htmlspecialchars

标签: php html mysql variables addslashes


【解决方案1】:

使用 PHP 输出 HTML 的一些技巧:

  1. 使用单引号,这样您就不必转义双引号(使用 echo 时),
  2. 使用htmlspecialchars() 正确转义您可能拥有的任何“流氓”值。

使用echo的示例:

echo '<input type="hidden" name="id" value="', htmlspecialchars($row['id'], ENT_QUOTES, 'UTF-8'), '" />';

printf():

printf('<input type="hidden" name="id" value="%s" />', 
    htmlspecialchars($row['id'], ENT_QUOTES, 'UTF-8')
);

或者,在 HTML 模式下:

?>
<input type="hidden" name="id" value="<?php echo htmlspecialchars($row['id'], ENT_QUOTES, 'UTF-8'); ?>" />
<?php

【讨论】:

  • 仅供参考,htmlspecialchars 的默认值应该足以满足双引号 value 属性,因此您可以放心地省略第二个和第三个参数。
  • @Phil 默认值应该就足够了,但他们历来没有:)
  • PHP 最大的问题是它的历史 :)
  • the defaults for htmlspecialchars should suffice for a double-quoted value 不,至少对我来说,我需要一个ENT_QUOTES 才能让htmlspecialchars 工作
【解决方案2】:

使用htmlentities:

echo "<input type=\"hidden\" name=\"id\" value=\"".htmlentities($row['id'])."\" />";

【讨论】:

  • 这似乎没有回答 OP。 (问题似乎是如何转义 html 属性值)
  • 公平点 - 我最初误读了这个问题。已编辑。
【解决方案3】:

如何使用单引号,这样您就不必转义任何引号。 像这样:

echo '<input type="hidden" name="id" value="'.$row['id'].'" />';

【讨论】:

    猜你喜欢
    • 2019-08-10
    • 2012-07-28
    • 2011-07-13
    • 2011-09-10
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多