У меня есть файл PHP, который извлекает информацию из CSV-файла и успешно превращает его в таблицу, в которой отображаются только определенные строки и столбцы.Цитаты в CSV-файле, отображаемые в php-файле вместо поля обнуления
Однако CSV-файл имеет записи в нем, в которых есть запятая и пробел, завернутые в кавычки. Мой PHP-файл разбивает эти записи на две части из-за запятой и показывает кавычки вместо использования меток кавычек, чтобы указать, что это поле, которое содержит запятую и пробел.
Например, файл CSV выглядит следующим образом:
AA,BB,"Surname, Initial",CC,DD,EE
«Фамилия и Initial» должен быть в том же поле в результирующей таблице, но вместо этого два поля создаются.
Я действительно хотел бы решить эту проблему в PHP-коде, а не заниматься самим файлом CSV. Код здесь:
echo "<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\"/>
<link rel=\"stylesheet\" type=\"text/css\" href=\"test.css\">";
$file = 'CSV/test.csv';
$lines = file($file);
if (file_exists($file)){
//echo "$file exists<br/>";
echo '<table>'; //create the html table
$x=2; //define the first line to display
$y=20; //define the last line to display
$line_counter=0;
foreach ($lines as $line) { //loop to fill your table with csv data
if($x<=$line_counter && $line_counter<=$y)
{
$expl = explode(",", $line); //explode each line on "," to create the rows
echo "<tr>"; //create each line of your table
$c=0;
while ($c<=47) { //loop to extract columns 2 to 47
if(($c % 2) == 1){ //odd rows
echo "<td class=\"odd\">".$expl[$c]."</td>";
}
elseif(($c == 0)){
echo "<td class=\"even\">".$expl[$c]."</td>";
}
else{
echo "<td class=\"even\">".$expl[$c]."</td>"; //even rows
}
$c++;
}
echo "</tr>";
$x++;
}
$line_counter++;
}
echo "</table>";
}
Почему вы не использовать встроенную функцию [fgetcsv()] (http://www.php.net/manual/en/function.fgetcsv.php) для обработки чтения файла .... он написан специально для этой цели и будет обрабатывать кавычки для вас, и ваша проблема будет волшебным образом исчезнуть. –