Php 如何在使用撇号的输入中转义撇号

Php 如何在使用撇号的输入中转义撇号,php,mysql,string,apostrophe,Php,Mysql,String,Apostrophe,我有一个配置文件页面,其中我想为大多数用户显示数据库中的信息,还有一个表单,其中当前数据是具有修改权限的用户的默认值 if ($IDprofile == $_SESSION['userID']) { echo "<form method='post'> Surname: <input type='text' required name='surname' maxlength=50 value=".htmlenti

我有一个配置文件页面,其中我想为大多数用户显示数据库中的信息,还有一个表单,其中当前数据是具有修改权限的用户的默认值

if ($IDprofile == $_SESSION['userID'])
{
    echo "<form method='post'>
            Surname: <input type='text' required name='surname' maxlength=50 
                value=".htmlentities($user['Surname'])."><br>
            Name: <input type='text' required name='name' maxlength=50 
                value=".htmlentities($user['Name'])."><br>

        Birthdate (format YYYY-MM-DD): <input type='text' required name='BirthDate' value='";
        if ($user['BirthDate'] != null)
            echo $user['BirthDate'];
        else
            echo "-";
        echo "'><br>

        Description: <input type='text' maxlength=255 name='description'                                 value='";
        if ($user['Description'] != null)
            echo htmlentities($user['Description']);
        else
            echo "-";
        echo "'><br>
        <input type='submit' value='OK'></form>";
}
如您所见,我尝试了htmlentities,它可以将撇号转换为&39;,但它不起作用。其他方法如addslashes和addcslashes也不起作用

显示的是我的表单输入和它应该具有的值,直到有一个撇号的地方,它刚刚结束。addslashes也会这样做,在结尾前加上/


最让我困惑的是,我的数据库中有一个带撇号的姓氏,而这个姓氏显示得很好。

请尝试这样输出变量:

htmlspecialchars$user[‘姓氏’],ENT_引号


另外,请确保在您的系统中输入,以便在发布新数据时不会自动获得任何额外的斜杠。

请尝试按如下方式输出变量:

htmlspecialchars$user[‘姓氏’],ENT_引号

另外,请确保在系统中使用双引号,以便在发布新数据时不会自动获得任何额外的斜杠。

htmlentities默认情况下仅编码双引号,因为它们是HTML属性更常见的终止符。如果您希望它也编码“单引号”,则需要设置ENT_quotes标志:

ENT_HTML401是另一个默认标志;现在你可能想用ENT_HTML5来代替

你也应该用引号来分隔你的属性!目前,您的结果看起来像value=James,这并不错误,但一旦值包含空格或引号或其他特殊字符,就会给您带来麻烦。

htmlentities默认情况下只编码双引号,因为它们是HTML属性更常见的终止符。如果您希望它也编码“单引号”,则需要设置ENT_quotes标志:

ENT_HTML401是另一个默认标志;现在你可能想用ENT_HTML5来代替


你也应该用引号来分隔你的属性!目前,您的结果看起来像value=James,这是正确的,但一旦您的值包含空格、引号或其他特殊字符,就会给您带来麻烦。

您能否给出正确显示和不正确显示的示例用户?你能举一个例子说明它应该是什么样子以及它做错了什么吗?你能举一个例子说明正确显示的用户和不正确显示的用户吗?你能举一个例子说明它应该是什么样子以及它做错了什么吗?
htmlentities($foo, ENT_QUOTES | ENT_HTML401)