【问题标题】:PHP Escaping JSON string for CSV export用于 CSV 导出的 PHP 转义 JSON 字符串
【发布时间】:2014-02-20 11:45:00
【问题描述】:

我有一个数组,其中一个元素的值是一个长 JSON 字符串

foreach ( $results as $data ) {
    // Put the data into the stream
    fputcsv($fh, $data);
}

我需要一种方法来转义 JSON 字符串,因为目前在我的 CSV 导出中,JSON 字符串中的反斜杠正在开始新列

谢谢

亚历克斯

【问题讨论】:

    标签: php json csv escaping export-to-csv


    【解决方案1】:

    是的,您可以使用

    foreach ( $results as $data ) {
        if(is_array(json_decode($data,true))) continue ;
        fputcsv($fh, $data);
    }
    

    最新评论更新 ::

    看起来你的 $data 有一个数组而不是 JSON,所以在这种情况下你可以这样做

    foreach ( $results as $data ) {
            if(is_array($data)) continue ;
            fputcsv($fh, $data);
        }
    

    将两者结合起来,我们可以得到以下内容,它将同时转义 JSON 和 ARRAY

    foreach ( $results as $data ) {
            if(is_array($data)) continue ;
            if(is_array(json_decode($data,true))) continue ;
            fputcsv($fh, $data);
        }
    

    【讨论】:

    • json_decode() 期望参数 1 是字符串,给定数组
    • 另外你需要转义双引号("),用两个双引号("")替换它们。除非它会开始一个新的列。
    • 看起来你的 $data 是一个数组而不是 json 如果是这样,那么你可以使用 is_array($data)
    • 用小代码多解释会更清楚提供答案。
    • 是逗号引起了问题,双引号没问题
    猜你喜欢
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多