【发布时间】:2014-08-08 21:48:20
【问题描述】:
我有以下代码:
<?
$string="< input type=button value='Open' onclick='document.location.href=\"".format_URL("phpfolder",$sesion)."objects/construct.php?id_object=$id_object\"' >";
mysql_query( "insert into db (code) values ('$string')" );
?>
当使用$string=mysql_real_escape_string($string); 转义时,结果是
$string=\"< input type=button value=\'Open\' onclick=\'document.location.href=\"\".format_URL(\"phpfolder\",$sesion).\"objects/construct.php?id_object=$id_object\"\' >\";
应该是这样的:
$string=\"< input type=button value=\'Open\' onclick=\'document.location.href=\\\"\".format_URL(\"phpfolder\",$sesion).\"objects/construct.php?id_object=$id_object\\\"\' >\";
为什么 mysql_real_escape_string() 无法识别它必须转义 \"" 的第一个反斜杠才能将其转换为 \\\"\" ?
这是 PHP 中的错误吗?
我已尝试应用 addlashes、html_entities、str_replace、preg_replace 等函数。没有任何效果或我使用错误。
有什么办法呢?
【问题讨论】:
-
我不明白
$string=\"中的第一个反斜杠来自哪里。该引号不是字符串的一部分,它是 PHP 字符串周围的分隔符。 -
我同意 Barmar:从您发布的代码中,我不明白为什么
mysql_real_escape_string函数会添加反斜杠和双引号字符。基于第一个$string="<input...分配,$string中的第一个字符将是小于号。mysql_real_escape_string没有理由添加反斜杠和双引号字符。还有其他事情(你没有显示)。 -
我的错误,$string 位于我正在处理的 php 代码编辑器项目的文本区域中。这就是我需要转义才能在这种情况下工作的原因。
标签: php mysql regex mysql-real-escape-string