如何摆脱PHP JSON字符串中的反斜杠和双引号

时间:2019-01-06 23:59:48

标签: php jquery json

我试图摆脱JSON代码中的双引号和反斜杠,但似乎无济于事。显然我在这里做错了。有人会这样把我指向正确的方向吗?

这是我的PHP代码的一部分,其中包含要返回的HTML。如您所见,我尝试转义然后发送它,并在通过json_encode()发送之前删除反斜杠。分别和一起尝试了它们。我是双重编码还是什么?预先感谢。

if($stmt->rowCount() > 0){
        $response = "";
        foreach($returnSmt as $row){

            $response .= '<div class=\"col-sm-8 col-sm-offset-2\">              
                <div class=\"panel panel-default panelFullLink\">
                    <a href=\"topic.php?id='.$row['topic_id'].'\" class="fullClickLink\"></div></div>';
        }

        //Here is the code that I tried in a few ways to get rid of the slashes and double quotes
        $response = preg_replace("@[\\r|\\n|\\t]+@", "", $response);
        $response = stripslashes($response);
        $response = trim($response);
        echo str_replace('\/','/', json_encode($response, JSON_UNESCAPED_SLASHES));
}

如果需要,这是我的AJAX函数,用于处理JSON代码。

$.ajax({
        method: "POST",
        url: "sortResults.php",
        data:  {
            infiniteScrollData: 1,
            start: start,
            limit: limit
            },
        dataType: "json",
        cache: false,
        success: function(response){
            if(response == "reachedMax")
                reachedMax = true;
                else{
                    start += limit;
                    $("#rowDisplayResults").append(response);
                }

        }
    });

2 个答案:

答案 0 :(得分:2)

从AJAX和PHP来看,您似乎只是将整个响应的HTML附加到文档中的某个位置。所以说真的,您根本不必担心反斜杠。

if($stmt->rowCount() > 0){
    $response = '';
    foreach($returnSmt as $row){

        $response .= '<div class="col-sm-8 col-sm-offset-2">              
            <div class="panel panel-default panelFullLink">
                <a href="topic.php?id='.$row['topic_id'].'" class="fullClickLink"></div></div>';
    }

    // No need to JSON encode it, just echo your HTML:
    echo $response;
}

然后,您的AJAX保持原样。

答案 1 :(得分:0)

只需删除反斜杠,因为它们没有用,因为您用简单的引号对字符串进行了引用。
另外,请考虑使用addslashes函数来轻松转义稍后将解释的字符串。