2

geonames.orgのcsv ファイルを処理しているため、エンクロージャーなしで csv 行を取得する必要があります。

現在、fgetcsv()では、パラメーターに単一の文字を指定する必要があり、$enclosure指定しない場合は CSV データを処理しません。

PHPネイティブ機能を使用して、囲み文字のないcsvデータを取得するにはどうすればよいですか?

4

2 に答える 2

2

前述のとおり、最も簡単なのは fgetcsv() をまったく使用しないことです。単純なfgets () 関数を使用して CSV から各行を読み取り、explode () を使用してごとにすべての異なるフィールドの配列を作成できます。

以下に小さな例を示します。

$handle = fopen("foo.csv", "r");

$i = 1;  // for test output

while (($buffer = fgets($handle)) !== false) {
    $fields = explode(";", $buffer);  // assuming that fields are separated with semicolons

    $j = 1;

    // Test output
    echo "Line $i: ";
    // This is just for show, you can use a regular for loop instead
    foreach ($fields as $field) {
        echo "Field $j: $field";
        $j++;
    }

    echo "\n";
    $i++;
}

fclose($handle);
于 2013-06-03T12:48:35.573 に答える