通过php在html元素内打印特殊字符';s属性
假设通过php在html元素内打印特殊字符';s属性,php,html,escaping,Php,Html,Escaping,假设$string=AXèdfdèsèdsè'/\”(实际上,$string是从数据库分配的这个值) 所以当我打印以下内容时 echo "<option value='". htmlspecialchars($string) ."'>".$string."</option>"; echo.“$string.”; 我得到输出 <option \"'="" value="AX èdfdfdèsèdsè">AX èdfdfdèsèdsè'/\"
$string=AXèdfdèsèdsè'/\”
(实际上,$string
是从数据库分配的这个值)
所以当我打印以下内容时
echo "<option value='". htmlspecialchars($string) ."'>".$string."</option>";
echo.“$string.”;
我得到输出
<option \"'="" value="AX èdfdfdèsèdsè">AX èdfdfdèsèdsè'/\"</option>
您应该在第二次使用$string时使用htmlspecialchars,以防止用“破坏html。另一种答案是使用htmlspecialchars($value,entu QUOTES)
,因此基本上
echo "<option value='". htmlspecialchars($value,ENT_QUOTES)."'>".($value)."</option>";
echo”“($value)。”;
默认情况下,htmlspecialchars($value)
或htmlspecialchars($value)
转换单引号”
,除非明确设置ENT\u quotes
标志。echo'',htmlspecialchars($string),'';
echo '<option value="', htmlspecialchars($string), '">', htmlspecialchars($string), '</option>';
除非你告诉它,否则PHP不会逃避任何东西 不能复制它。输出与预期一样:PHP本身不会破坏初始属性=语法。也许可以查看原始源代码,而不是通过开发人员工具等。也可以使用entu QUOTES
来转义单引号,如果要转义重音字母,还可以使用htmlentities()
。并确保正确的字符集。最后一句话的可能重复是正确的,并且这样说……第二次使用htmlspecialchars()
并不重要。由于单引号的缘故,它实际上是在第一篇文章中突破的。但这是一个建议,因为您将从DB获得其他字符串-然后可能会有问题。。。
echo "<option value='". htmlspecialchars($value,ENT_QUOTES)."'>".($value)."</option>";
echo '<option value="', htmlspecialchars($string), '">', htmlspecialchars($string), '</option>';