将HTML标签输出到php输入值

3

我有一个问题,我想要输出包含HTML标签的字符串,但我不知道该怎么说,这是我的代码:

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

当 $row['id'] 的值为 '<b>test</b>' 时,问题出现在 echo 输出上,<b> 的闭合标签会关闭输入标签,因此输入的值只有 '<b'


通过htmlentities函数运行它。 - MightyPork
你只是缺少一个双引号来包裹这个值。 - naththedeveloper
5个回答

5

htmlentities($row['id'],ENT_QUOTES)这个函数将会把<>编码为&lt;&gt;

$str = "A 'quote' is <b>bold</b>";


echo htmlentities($str);
// Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;

echo htmlentities($str, ENT_QUOTES);
// Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;

两种方法都是正确的,第二种更加安全。


4
  1. 通过htmlspecialchars将数据转义,以便将其安全地插入HTML属性(通过将具有特殊含义的字符转换为实体)。
  2. 引用属性值(您的代码在输出的行ID周围没有"),以使空格、=等被视为值的一部分

例如:

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

或者更好的方法是,在PHP模式下不要输出大块标记,直到您需要使用变量/函数调用时切换到直接输出模式:
<input type="hidden" name="id" value="<?php echo htmlspecialchars($row['id']); ?>">

3

在您的echo语句中使用htmlspecialchars,如下所示:

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

还为value的值添加了引号。


1
使用什么?这是一个找不同的游戏。答案应该解释他们正在做什么。 - Quentin
很明显发生了什么改变。不过,我已经编辑过了,使其非常清楚明白。 - John Dorean
您还在value属性的值周围加了引号。这些不明显。引号很容易被忽略。 - Quentin

1

你只需要正确转义:

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

1
我会使用双引号 " 而不是单引号 \',因为其他属性都在双引号中。 - Mash

-1

你会得到你想要的:

htmlentities($this->input->post('txtEditor'));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接