直接在ISO编码中保存由PHP创建的CSV

问题描述 投票:1回答:1

我正在尝试使用PHP创建一个CSV文件。我想要ISO-8859-1编码。到目前为止,我设法创建了CSV文件,但它具有UTF-8编码。

由于utf8_decode显示了如何将它从ISO转换为CSV,我能够使它与this question一起工作,但我的目标是:

直接以ISO-8859-1编码直接创建文件。

这是我的代码(没有解码,问我是否也想要它):

    $columns = array(
        'option1' => 'Option1 title',
        'option2' => 'Option2 title',
        'option3' => 'Option3 title'
    );

    /* Setting default values for the array */

    $default = array(
        'option1' => 'value1',
        'option2' => 'value2',
        'option3' => 'value3'
    );

    /* Creating the CSV file */

    $fp = fopen('/tmp/' . $this->fileName, "w");

    if ($fp) {
        fputcsv($fp, array_values($columns), ";");

        foreach ($legListArray as $row) {
            $data = array();

            foreach ($columns as $key => $_dummy) {

                if (substr($key, 0, 7) == "_field_") {
                    $data[] = $row[$key];
                } else {
                    $data[] = $default[$key];
                }
            }

            fputcsv($fp, $data, ";");
        }

        fclose($fp);
    }
php csv iso
1个回答
1
投票

只是map the array在调用utf8_decode时使用fputcsv

您只有两行受影响:

fputcsv($fp, array_map('utf8_decode', array_values($columns)), ";");
...
    fputcsv($fp, array_map('utf8_decode', $data), ";");

或者你可以在构建阵列时做utf8_decode,即:

$data[] = utf8_decode($row[$key]);
...
$data[] = utf8_decode($default[$key]);
© www.soinside.com 2019 - 2024. All rights reserved.