可能重复:
PHP: Convert special characters to HTML character codes
我在DB中有一个字符串列,它可以有特殊字符“&”。
此列值用于以下选项:
<select onChange="display()">
echo "<option value='".$products."' </option>";
加了: 在此之后,生成的HTML是正确的:
<option value="{"varId":"2 & 4 wheel","month":"June"}"> two and four wheel </option>
它被发送到PHP脚本。如果$ products的值是“2&amp; 4 wheel”那么在PHP中,我得到的只是“2”并且我的查询失败了。
我知道这是因为HTML无法处理特殊字符,但是如何解决这个问题。
答案 0 :(得分:2)
使用htmlentities对字符串进行编码。
echo "<option value='". htmlentities($products) ."' </option>";
答案 1 :(得分:2)
HTML 可以处理“特殊字符”。每种语言都有自己的“特殊字符”,每种语言都有自己的规则来处理它们。 HTML具有用于此目的的HTML实体。在将任意任意值回显到HTML之前,始终使用htmlspecialchars
对其进行HTML实体编码。
有关该主题的更多详细信息,请参阅The Great Escapism (Or: What You Need To Know To Work With Text Within Text)。
关于您的更新:
<option value="{"varId":"2 & 4 wheel","month":"June"}"> two and four wheel </option>
这绝不是正确的HTML。 value
包含"
,而且"
围绕value="..."
属性并且属于值的一部分是完全不明确的。它需要看起来像这样:
<option value="{"varId":"2 & 4 wheel","month":"June"}"> two and four wheel </option>
在这里看一下语法高亮的区别。你得到这个:
$value = '{"varId":"2 & 4 wheel","month":"June"}';
echo '<option value="' . htmlspecialchars($value); .'"> two and four wheel </option>';
答案 2 :(得分:1)
将&
存储在您的数据库中是一种方式..要么使用str_replace('&', '&', $str)
进行转换,要么只使用类似htmlentities()
答案 3 :(得分:0)
您可以使用htmlentities(http://php.net/manual/en/function.htmlentities.php)在输出字符串之前对其进行编码。
示例:
$products = htmlentities($products);
echo "<option value='".$products."' </option>";
OR
echo "<option value='". htmlentities($products) ."' </option>";