【问题标题】:Stripping slashes in each value in an array去除数组中每个值的斜线
【发布时间】:2017-05-17 10:28:37
【问题描述】:

我有一个从 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);
    }

}

【问题讨论】:

  • 为什么是sql-server?
  • @KannanKandasamy 因为我得到的结果来自 sql-server
  • 哪个版本的sql server/
  • 我用的是2012,有没有办法通过sql而不是php来做到这一点?
  • SQL Server 2016 中有 String_escape 函数,它将自动提供此数据,否则我们可能需要使用替换

标签: php arrays sql-server


【解决方案1】:

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

select string_escape(yourcolumn, 'json') from yourtable

如果

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

【讨论】:

  • 谢谢,编码愉快
【解决方案2】:

希望这对你有用

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);

【讨论】:

  • 我收到stripslashes() expects parameter 1 to be string, array given
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多