为什么php读取反斜杠?

为什么php读取反斜杠?,php,arrays,cookies,Php,Arrays,Cookies,我有一个将数据保存到cookie的代码。保存在cookie中的数据如下所示: (%22Lynyrd%20Skynyrd%22%3D%3Earray(%226983887641%22)%2C%20(%22Rod%20Stewart%22%3D%3Earray(%2259088763306%22)%2C%20(%22Led%20Zeppelin%20Official%22%3D%3Earray(%22131572223581891%22)%2C%20(%22Black%20Sabbath%22%3D

我有一个将数据保存到cookie的代码。保存在cookie中的数据如下所示:

(%22Lynyrd%20Skynyrd%22%3D%3Earray(%226983887641%22)%2C%20(%22Rod%20Stewart%22%3D%3Earray(%2259088763306%22)%2C%20(%22Led%20Zeppelin%20Official%22%3D%3Earray(%22131572223581891%22)%2C%20(%22Black%20Sabbath%22%3D%3Earray(%2256848544614%22)%2C%20(%22Hadag%20Nahash%20%D7%94%D7%93%D7%92%20%D7%A0%D7%97%D7%A9%22%3D%3Earray(%22116542622632%22)%2C%20
当我用这个php阅读它时:

<?php
    if (isset($_COOKIE["currentsearchctrl"])) {
        $cookz = $_COOKIE["currentsearchctrl"];
        echo $cookz;

    } else {
        echo 'cookie not set';
    } ?>
问题在于反斜杠。我打算:$data=array($cookz);但它不起作用

有什么想法吗?

%22是“的HTML,PHP用反斜杠分隔这些引号。有关详细信息,请参阅此:


您可以关闭此功能,也可以自己删除斜杠。

您不能这样做

要写出cookie,请使用以下内容,将$cookievalue写入数组

$cookievalue = implode("|", $array);
然后检索数据,并将其放回数组中:

$cookieArray = explode("|", $_COOKIE['cookie']);

很可能您已启用,
因为主机上启用了GET、POST、COOKIE的双引号,这是因为这是一个可怕的“功能”,每个人都希望它死掉

如果可以在服务器上编辑php.ini,请设置
magic\u quotes\u gpc=Off
magic\u quotes\u runtime=Off

否则,如果Apache是HTTP服务器,则有一个
.htaccess
技巧可以使用

否则,您必须使用将数据恢复正常。以下是当无法以其他方式禁用魔术引号时,我用于禁用魔术引号的include脚本:

if (get_magic_quotes_gpc()) {
    function array_stripslashes(&$array) {
        foreach($array as $k => $v) {
            if (is_array($v)) {
                array_stripslashes($array[$k]);
            } else {
                $array[$k] = stripslashes($v);
            }
        }
    }
    array_stripslashes($_GET);
    array_stripslashes($_POST);
    array_stripslashes($_COOKIE);
    array_stripslashes($_REQUEST);
}

set_magic_quotes_runtime(0);

我不会说PHP正在划分它们。更像是转义。您可以在“\”上使用
str\u replace
,但最好是直接序列化和反序列化数据,而不是在最后使用数组。例如,您可以使用。
if (get_magic_quotes_gpc()) {
    function array_stripslashes(&$array) {
        foreach($array as $k => $v) {
            if (is_array($v)) {
                array_stripslashes($array[$k]);
            } else {
                $array[$k] = stripslashes($v);
            }
        }
    }
    array_stripslashes($_GET);
    array_stripslashes($_POST);
    array_stripslashes($_COOKIE);
    array_stripslashes($_REQUEST);
}

set_magic_quotes_runtime(0);