在数组中的每个值中去除斜杠

时间:2017-05-17 10:28:37

标签: php arrays sql-server

我有一个从SQL调用中得到的值数组但是当我尝试将它放入我的网页中的表时,我收到错误:

JSON.parse: bad escaped character at line 1 column 657 of the JSON data

我已经意识到在数据中,其中一行有数据:INNO BROWN THOMAS TV \' S

由于转义字符导致错误,大结果集作为数组返回,我需要在php中使用某种循环来删除这些斜杠并停止错误。做这个的最好方式是什么?我查看了addslashesstripslashes的PHP手册,我尝试循环数组以删除斜杠,但没有任何效果。

感谢正确指导任何帮助或积分。

$prodSQL = new prodEnqSQL;
$results = $prodSQL->getProdData($prodName, $prodType, $prodCode);
function stripslashes_array($results){
    global $results;
    if(is_array($results)){
        foreach ($results as $key=>$value){
            $value[$key] = stripslashes_array($value);
        }

    }else{
        return stripslashes($results);
    }

}

enter image description here

2 个答案:

答案 0 :(得分:1)

如果是sql server 2016,你可以在查询时使用sql server的STRING_ESCAPE,如下所示:

select string_escape(yourcolumn, 'json') from yourtable

如果< SQL Server 2016

select replace(yourcolumn,'\','\\') from yourtable

答案 1 :(得分:0)

希望这对你有用

foreach ($your_array as $key=>$value) {
    $your_array[$key] = stripslashes($value);
    }

或许多级别数组使用此:

function stripslashes_deep($value)
{
    $value = is_array($value) ?
                array_map('stripslashes_deep', $value) :
                stripslashes($value);

    return $value;
}

$array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar"));
$array = stripslashes_deep($array);

print_r($array);