2

fgetcsv() と囲み文字に問題があります。

次のような CSV 行があります。

"13551","Digitaldruck "Blüte x3" ","gelb-weiss"

私はそのように fgetcsv() を使用しています:

    public function readCSVData($file, $delimiter, $contentDelimiter)
{
    $fp = fopen($file, 'r');

    $dataResult = array();

    while ($data = fgetcsv($fp, WDC_CSV_MAX_LINES, $delimiter, $contentDelimiter))
    {
        foreach ($data as $key=>$element)
        {
            $data[$key] = iconv("UTF-8", "ISO-8859-1//IGNORE", $element);
        }

        $dataResult[] = $data;
    }

    fclose($fp);

    return $dataResult;
}

私が期待しているのは次のとおりです。

[14] => Array
    (
        [0] => 13551
        [1] => Digitaldruck "Blüte x3"
        [2] => gelb-weiss
    )

しかし、私が得ているものは私を少し狂わせます

    [14] => Array
    (
        [0] => 13551
        [1] => Digitaldruck Blüte x3""
        [2] => gelb-weiss
    )

コンテンツ内で囲み文字を使用できるようにコードを設定するにはどうすればよいですか?

編集1:

内部の引用は別の引用でエスケープする必要があることを保証する必要があります

すなわち:

"13551","Digitaldruck ""Blüte x3"" ","gelb-weiss"

正しい結果につながります。

4

0 に答える 0