我怎样才能恢复\"通过fputcsv函数后

时间:2015-09-28 10:40:31

标签: php csv fputcsv

我正在使用短信API从我的应用程序发送短信批处理。我首先使用以下两个函数来生成CSV

if (!function_exists('output_csv')){
    function output_csv($header, $csv_array)
    {
        $out = fopen('php://output', 'w');

        //put csv header
        fputcsv($out, $header);

        //Put csv content rows
        foreach ($csv_array as $row) {
            fputcsv($out, $row);
        }
        fclose($out);
    }
}

if (!function_exists('get_csv')){
    function get_csv($header, $csv_array)
    {
        ob_start();
        output_csv($header, $csv_array);
        return ob_get_clean();
    }
}

当我将带引号字符串的数组传递给get_csv()函数时,我得到这样的结果:

  

MSISDN,消息

     

111111111,"你好"

     

333333333"""你好""再次"

然后,我使用CSV字符串并通过url_encode()函数输出以下内容:

  

MSISDN%2Cmessage%0A111111111%2C%22Hi +那里%22%0A333333333%2C%22%22%22Hello%22%22again%22%0A

这会破坏短信并发送到双引号之前的部分。

在API示例中,建议编码字符串应如下所示:

  

MSISDN,消息%0A%22111111111%22%22Hi +那里%22%0A%22333333333%22%22Hello +试。+这里是+一些+%5C%22quoted +文本%5C%22%5C %0aThis +文本+如下+ A +换行符%22

请注意%22之前的反斜杠%5C。

在我的情况下,反斜杠在通过fputcsv

后被删除

我害怕使用str_replace,因为在有三/四连续双引号的某些情况下它可能会出错。 什么是恢复我逃脱的最佳方式?通过fputcsv函数后?

0 个答案:

没有答案