如何处理特殊字符“&”在MySQL,HTML和PHP之间

时间:2012-09-09 09:47:00

标签: php html special-characters

  

可能重复:
  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无法处理特殊字符,但是如何解决这个问题。

4 个答案:

答案 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="{&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>';

答案 2 :(得分:1)

&amp;存储在您的数据库中是一种方式..要么使用str_replace('&', '&amp;', $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>";