【发布时间】:2015-08-20 12:13:24
【问题描述】:
假设$string = AX èdfdfdèsèdsè'/\"(实际上,$string 是从 DB 分配的这个值)
所以当我打印以下内容时,
echo "<option value='". htmlspecialchars($string) ."'>".$string."</option>";
我得到了输出,
<option \"'="" value="AX èdfdfdèsèdsè">AX èdfdfdèsèdsè'/\"</option>
我怎样才能正确地逃避这个,这样我就不会创建另一个无用的属性,而是获得与$string 中相同的值?
另外,Php 没有整体逃逸$string 的原因是什么?
【问题讨论】:
-
无法重现。输出如预期:
<option value='AX èdfdfdèsèdsè'/\&quot;'>AX èdfdfdèsèdsè'/\"</option> -
PHP 本身不会破坏初始属性= 语法。也许查看原始源代码,而不是通过开发人员工具等。还可以使用
ENT_QUOTES转义单引号,如果您打算转义重音字母,请使用htmlentities()。并确保正确的字符集。