Php 在'中使用双引号;输入类型=";“文本”';值无效,字符串在双引号处停止!

Php 在'中使用双引号;输入类型=";“文本”';值无效,字符串在双引号处停止!,php,javascript,html,Php,Javascript,Html,我怎样才能让用户在文本字段中使用''(双引号)呢 每当我在字段(值)中使用双引号时,在PHP文件中接收变量时,使用: $text=mysql_real_escape_string($_POST['subject']); 然后回显它,我得到一个正确转义的字符串,但是字符串正好在双引号之前停止 我不想因为双引号而停止 Javascript用于验证文本字段,所以它不是空的,也许我应该在验证和更改值时使用Javascript做更多的事情,以便php可以获得正确的值,包括双引号 谢谢 更新 代码:

我怎样才能让用户在文本字段中使用''(双引号)呢

每当我在字段(值)中使用双引号时,在PHP文件中接收变量时,使用:

   $text=mysql_real_escape_string($_POST['subject']);
然后回显它,我得到一个正确转义的字符串,但是字符串正好在双引号之前停止

我不想因为双引号而停止

Javascript用于验证文本字段,所以它不是空的,也许我应该在验证和更改值时使用Javascript做更多的事情,以便php可以获得正确的值,包括双引号

谢谢

更新

代码:

我曾尝试将以上两种方法合并,但只能得到相同的结果。 注意:我还尝试将
entquotes
添加到htmlentities函数中

输入的未格式化字符串:

   + , . ; : - _ space & % ! ? = # * ½ @ / \ [ ]< > " ' hej hej
+,.;:-uu空格和%!?=#*½@/\[]<>“'嘿嘿嘿
将在回显时输出此内容:

   + , . ; : - _ space & % ! ? = # * ½ @ / \\ [ ]< > 
+,.;:-\u空格&%!?=#*½ @ / \\ [ ]< > 

您必须使用
htmlspecialchars($str,entu QUOTES)
HTMLEntitys($str,entu QUOTES)
将引号转换为HTML实体
。这些函数还负责其他应编码的字符

mysql\u real\u escape\u string()
仅用于在数据库查询中转义单引号,以便您可以正确地将带单引号的字符串输入数据库(并避免SQL注入)


编辑:添加了参数。多亏了micahwittman,修改输入字符串不是JS的工作,服务器应该确保它可以接受它得到的内容


在将双引号传递到mysql转义函数之前,可以使用另一个值Assci symbol或HTML
等转义双引号?

将其输出到
输入时,双引号不起作用的原因是
值在引号处被截断。您需要在输出中使用。

您混淆了两件事:
mysql\u real\u escape\u string
用于准备字符串以存储在mysql数据库中
htmlentities
用于准备在浏览器中回音的字符串。两者都很重要,但是在同一个字符串上一个接一个地调用是不可能的。执行以下操作:

// Copy string after escaping for mysql into $db_headline
$db_headline= mysql_real_escape_string($_POST['headline']);

// Copy string after escaping for page display into $html_headline
$html_headline = htmlentities($_POST['headline']);

// Store the headline in the database

...

?>
<input type="text" name="headline" value="<?php echo $html_headline ?>" />

...
//将mysql转义后的字符串复制到$db\u headline中
$db_headline=mysql_real_escape_字符串($_POST['headline']);
//将页面显示转义后的字符串复制到$html\u标题中
$html_headline=htmlentities($_POST['headline']);
//将标题存储在数据库中
...
?>

请不要为此使用JavaScript。它不会做任何你不应该在服务器端做的事情。它不会显示双引号,它只显示反斜杠。。。阅读我的更新plzYou需要为htmlentities使用可选的第二个参数,如下所示:echo htmlenties($headline,entu QUOTES);它还将对双引号和单引号进行编码(请参阅中除ENT_引号外的其他特殊常量)。另外,在准备将字符串存储到mysql数据库中时,不应该只使用sql\u real\u escape\u string()——这就是为什么\变得\\。
// Copy string after escaping for mysql into $db_headline
$db_headline= mysql_real_escape_string($_POST['headline']);

// Copy string after escaping for page display into $html_headline
$html_headline = htmlentities($_POST['headline']);

// Store the headline in the database

...

?>
<input type="text" name="headline" value="<?php echo $html_headline ?>" />

...