如果用户未正确输入表单中的所有数据,我将尝试以表单形式输出项目名称,即“ David's Project”,以免用户不得不再次输入名称。
如果我var_dump $ name我看到了大卫的项目。但是,如果我回显$ name,我会看到David“&#39”项目。我意识到'(单引号)变为“&#039”;但我曾尝试使用ENT_NOQUOTES和ENT_COMPAT来避免对单引号进行编码,但两者均无效。
$name = trim(filter_input(INPUT_POST, 'name0', FILTER_SANITIZE_STRING));
<form method="post" class="form" />
Title: <input type="text" name="name0" value="<?php echo
htmlspecialchars($name, ENT_NOQUOTES); ?>">
我做错什么了吗?还是ENT_NOQUOTES应该起作用?我尝试使用str_replace替换为'带\',但这也不起作用。
我发现的唯一方法就是使用它:
htmlspecialchars_decode(htmlspecialchars($name, ENT_NOQUOTES));
可以接受吗?
对不起,我意识到这可能是一个非常愚蠢的问题,但是我无法解决这个问题。
感谢您的答复。
答案 0 :(得分:2)
如果它可以解决您的问题,您可以接受一个简单的答案,但您应该真正了解,您所研究的问题是您或其他人为您创造的更大的问题。
如果可能的话,我的建议是先修复您的INSERT代码,这样它就不会对数据进行html编码。当您将数据输出到HTML格式时,应该发生这种html编码。您可以使用htmlspecialchars()
来做到这一点。