我有一个问题,我想要输出包含HTML标签的字符串,但我不知道该怎么说,这是我的代码:
echo '<input type="hidden" name="id" value='.($row['id']).'>';
当 $row['id'] 的值为 '<b>test</b>'
时,问题出现在 echo 输出上,<b>
的闭合标签会关闭输入标签,因此输入的值只有 '<b'
。
htmlentities($row['id'],ENT_QUOTES)
这个函数将会把<
和>
编码为<
和>
$str = "A 'quote' is <b>bold</b>";
echo htmlentities($str);
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);
// Outputs: A 'quote' is <b>bold</b>
两种方法都是正确的,第二种更加安全。
htmlspecialchars
将数据转义,以便将其安全地插入HTML属性(通过将具有特殊含义的字符转换为实体)。"
),以使空格、=
等被视为值的一部分例如:
echo '<input type="hidden" name="id" value="'. htmlspecialchars($row['id']) . '">';
<input type="hidden" name="id" value="<?php echo htmlspecialchars($row['id']); ?>">
在您的echo语句中使用htmlspecialchars
,如下所示:
echo '<input type="hidden" name="id" value="' . htmlspecialchars($row['id']) . '">';
还为value
的值添加了引号。
你只需要正确转义:
echo '<input type="hidden" name="id" value="'.($row['id']).'">';
"
而不是单引号 \'
,因为其他属性都在双引号中。 - Mash你会得到你想要的:
htmlentities($this->input->post('txtEditor'));