1

可能重复:
PHP:将特殊字符转换为 HTML 字符代码

我在 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 & 4 wheel”,那么在 PHP 中我得到的只是“2”并且我的查询失败了。

我知道这是因为 HTML 无法处理特殊字符,但如何解决这个问题。

4

4 回答 4

2

使用htmlentities对字符串进行编码。

echo "<option value='". htmlentities($products) ."' </option>";
于 2012-09-09T09:50:39.863 回答
2

HTML可以处理“特殊字符”。每种语言都有自己的“特殊字符”,每种语言都有自己的处理规则。HTML 具有用于此目的的 HTML 实体。在将任意值回显HTML 之前,始终使用 HTML 实体对它们进行编码htmlspecialchars

有关该主题的更深入信息,请参阅The Great Escapism(或:使用文本中的文本您需要知道的内容)


关于您的更新:

<option value="{"varId":"2 & 4 wheel","month":"June"}"> two and four wheel </option>

这绝不是正确的 HTML。valuecontains ",它是完全模棱两可的,它围绕"value="..."属性,哪些是值的一部分。它需要看起来像这样:

<option value="{&quot;varId&quot;:&quot;2 &amp; 4 wheel&quot;,&quot;month&quot;:&quot;June&quot;}"> two and four wheel </option>

看看这里语法高亮的区别。你会得到这个:

$value = '{"varId":"2 & 4 wheel","month":"June"}';
echo '<option value="' . htmlspecialchars($value); .'"> two and four wheel </option>';
于 2012-09-09T09:50:52.403 回答
1

将您的数据库存储&amp;在您的数据库中是一种方法.. 使用str_replace('&', '&amp;', $str)或仅使用类似的东西进行转换htmlentities()

于 2012-09-09T09:51:16.333 回答
0

您可以使用 htmlentities (http://php.net/manual/en/function.htmlentities.php) 在输出字符串之前对其进行编码。

例子:

$products = htmlentities($products);
echo "<option value='".$products."' </option>";

或者

echo "<option value='". htmlentities($products) ."' </option>";
于 2012-09-09T09:51:23.297 回答