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