fgetcsv - Добавить цитаты в поля, которые не имеют кавычек - PullRequest
0 голосов
/ 14 января 2010

У меня есть текстовый файл (его запятая разделена некоторыми полями, заключенными в двойные кавычки), когда я анализирую его, используя это:

if (($handle = fopen('C:\tester\fake.txt', "r")) !== FALSE) {
    while (($data = fgetcsv($handle, ",")) !== FALSE) {
        $num = count($data);
        //echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}

Показывает, что каждое поле не имеет кавычек, fgetcsv удаляет это автоматически?

Как мне заставить его отображать поля без кавычек, добавлять к ним кавычки и затем сохранять файл? Возможно ли это?

Спасибо всем

Обновление

Я только что попробовал fputcsv и обнаружил, что в написанном файле нет кавычек вокруг полей, только очень мало, меньше, чем в исходном файле! Что я делаю не так?

$row = 1;
$newfile = fopen('C:\new-file.txt', "w");

if (($handle = fopen('C:\fake.txt', "r")) !== FALSE) {
    while (($data = fgetcsv($handle, ",")) !== FALSE) {
        $num = count($data);
            fputcsv($newfile, $data, ',', '"');
    }
    fclose($handle);
    fclose($newfile);
}

Ответы [ 3 ]

2 голосов
/ 14 января 2010

fgetcsv удаляет кавычки.

С помощью fputcsv вы можете записать cvs-файл. У него есть варианты использования кавычек или нет, но он будет делать то же самое для всех полей.

Чек http://www.php.net/fgetcsv и http://www.php.net/fputcsv

1 голос
/ 14 января 2010

Кавычки являются частью формата файла CSV (кавычки вокруг полей, которые содержат или новые строки), поэтому fgetcvs будет (и ожидается) удалит их.

0 голосов
/ 14 января 2010

да, он удаляет кавычки, поскольку предполагает, что вам нужны данные для столбцов, а кавычки не являются частью данных. используйте fget вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...