CSV парсер на PHP
csv парсер на php, очень простой и в некоторых случаях очень нужный скрипт. Написан был не мной, автору респект, надеюсь не обидится т.к. не помню исходной ссылки на сайт. Пользуйтесь.
1 2 3 4 5 6 |
echo "<table>\n"; ini_set("display_errors","0"); $file = $_POST['file']; $csv_lines = file("xxx.csv"); if(is_array($csv_lines)) { |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
//разбор csv $cnt = count($csv_lines); for($i = 0; $i < $cnt; $i++) { $line = $csv_lines[$i]; $line = trim($line); //указатель на то, что через цикл проходит первый символ столбца $first_char = true; //номер столбца $col_num = 0; $length = strlen($line); echo "<tr>\n"; for($b = 0; $b < $length; $b++) { //переменная $skip_char определяет обрабатывать ли данный символ if($skip_char != true) { //определяет обрабатывать/не обрабатывать строку ///print $line[$b]; $process = true; //определяем маркер окончания столбца по первому символу if($first_char == true) { if($line[$b] == '"') { $terminator = '";'; $process = false; } else $terminator = ';'; $first_char = false; } //просматриваем парные кавычки, опредляем их природу if($line[$b] == '"') { $next_char = $line[$b + 1]; //удвоенные кавычки if($next_char == '"') $skip_char = true; //маркер конца столбца elseif($next_char == ';') { if($terminator == '";') { $first_char = true; $process = false; $skip_char = true; } } } //определяем природу точки с запятой if($process == true) { if($line[$b] == ';') { if($terminator == ';') { $first_char = true; $process = false; } } } if($process == true) $column .= $line[$b]; if($b == ($length - 1)) { $first_char = true; } if($first_char == true) { $values[$i][$col_num] = $column; echo "<td bgcolor=\"#000000\" align=\"center\"><font color=\"#FFFFFF\">".$column."</font></td>\n"; $column = ''; $col_num++; } } else $skip_char = false; } echo "</tr>\n"; } } echo '</table>'; |
Свежие комментарии