Экранирование разрыва строки в csv php

#php #csv

#php #csv

Вопрос:

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

Проблема заключается в следующем, предполагая, что некоторые пользователи будут вставлять скрытые разрывы строк в строке, при использовании fgetcsv() он будет выводить строку, разбитую скрытыми разрывами строк.

Как я могу избежать разрыва строки или очистить свои данные?

Возможное решение:

предположим, что первая строка верна, $count = подсчитывает количество разделителей до разрыва строки, перестраивает текст в массив до тех пор, пока $count;

но я думаю, что доступны лучшие варианты.

ПОСЛЕДУЮЩЕЕ РЕДАКТИРОВАНИЕ

Вот входные данные *ВАЖНО[ ! ]: данные внутри файла Excel «в порядке», они не повреждены, это одна строка!!! сохранение его в виде файла csv и открытие его в блокноте показывает следующее

 asd;"asd
asd
asd";asd;asd
  

Вот код

 $handle = fopen("file.csv","r");
$data = fgetcsv($handle,";");
while($data = fgetcsv($handle)) {
    $array = explode(";",$data[0]);
    print_r($array);
}
fclose($handle);
  

Вот отраженные данные

 Array ( [0] => asd [1] => "asd ) Array ( [0] => asd ) Array ( [0] => asd" [1] => asd [2] => asd [3] => ) 
  

Спасибо

Комментарии:

1. Что вы имеете в виду под «скрытой строкой»?

2. откройте файл Excel и введите что-нибудь, затем нажмите alt enter, затем введите еще что-нибудь

3. @christi … затем сохраните этот файл в формате csv и прочитайте его с помощью fgetcsv(). Удивлен? Где все ваши воображаемые разорванные строки?

Ответ №1:

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

Итак, строка CSV, подобная этой

 1,"joe
""Big Coyote""
Hopkins",598600
  

будет прочитано без единой проблемы.

Комментарии:

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

2. и, наконец, изменил мой скрипт, и он, наконец, работает, пока ($data = fgetcsv($handle,1000,’;’,'»‘)) print_r($data); я мог бы извиниться за то, что недостаточно ясно изложил свою проблему, но все, что я читал дальше php.net и я действительно не мог этого понятьвыход.