为什么php在替换双引号时插入反斜杠

pol*_*ron 2 javascript php jquery

我想知道为什么php在我删除双引号时添加反斜杠.

<input type="text" name="number" id="number" />
<input type="button" name="button" id="button" value="Button" />
Run Code Online (Sandbox Code Playgroud)

假设他们用户输入值5-1/2"并且我通过jquery的.get方法将其传递给处理页面.

$('#button').click(function(){

    $.get('determine.php?number='+$('#number').val(),function(data){
     $('#response').html(data);
    });

});
Run Code Online (Sandbox Code Playgroud)

这是我的处理页面.

determine.php

$number = $_GET['number'];

$number = str_replace(array('"', "'"), '', $number);

echo $number;

//echos 5-1/2\
Run Code Online (Sandbox Code Playgroud)

为什么反斜杠在那里?

And*_*y E 6

当你删除斜杠时它不会添加它们,当启用magic_quotes_gpc指令时它会自动在查询字符串参数中转义它们(默认情况下它是5.30之前).它确实这是一个安全预防措施,从而使数据可以在数据库中查询安全使用.您可以通过更改php.ini文件中的设置来禁用它们,请参阅http://www.php.net/manual/en/security.magicquotes.disabling.php.

您还可以使用stripslashes删除它们:

$number = str_replace(array('"', "'"), '', stripslashes($number));
Run Code Online (Sandbox Code Playgroud)

stripslashes()的一个示例是当PHP指令magic_quotes_gpc打开时(默认情况下它已启用),并且您没有将此数据插入需要转义的位置(例如数据库).例如,如果您只是直接从HTML表单输出数据.