做隐藏输入的转义值

A. *_*ida -1 php

我有“隐藏”的问题,

PHP:

$text = addslashes("Black Sun's zenith");
echo "<input type='hidden' value=".$text." name='saveCard[]'>";
Run Code Online (Sandbox Code Playgroud)

显示实际代码是:

<input type="hidden" value="Black" sun\'s="" zenith="" name="saveCard[]">
Run Code Online (Sandbox Code Playgroud)

显示正确的代码是:

<input type="hidden" value="Black Sun's zenith" name="saveCard[]">
Run Code Online (Sandbox Code Playgroud)

谢谢大家。

Que*_*tin 5

addslashes是用于转义使用\字符开始转义序列的语言的内容的通用例程。HTML 不是这样一种语言,大多数语言都有更好、更具体的功能来处理转义。

使用htmlspecialchars, 不addslashes为 HTML 转义内容。

由于属性值包含空格,因此您还需要将其包裹在引号中。

echo "<input type='hidden' value=\"".htmlspecialchars($text)."\" name='saveCard[]'>";
Run Code Online (Sandbox Code Playgroud)

根据经验,尽量避免将 HTML 放入 PHP 字符串中。

?>
    <input 
        type="hidden"
        value="<?php echo htmlspecialchars($text); ?>" 
        name="saveCard[]">
<?php
Run Code Online (Sandbox Code Playgroud)