Я читаю некоторые строки из файла в следующем формате:
Identifier String Number String Number String Number String Number
Identifier String Number String Number String Number
Identifier String Number String Number
Identifier String Number String Number String Number String Number String Number
В файле, который мне дали, я считаю, что строки очень очень длинные, поэтому следующий код:
<?php
$fp = gzopen($filename, "r");
while($source = gzgets($fp, 4096)) {
$trans = array("\x0D" => "");
$source = strtr($source,$trans);
$source = trim($source);
$source = explode(' ', $source);
foreach($source as $value) {
$value = trim($value);
//Clean and insert into appropriate column
}
}
?>
вызывает ошибки синтаксического анализа, т.е. я не получаю ожидаемый столбец.Когда я ожидаю строку, она дает мне число, а когда я хочу число, она возвращает идентификатор.После нескольких часов отладки я понял, что размер буфера 4096 не может читать очень длинные строки, поэтому он читает только часть строки, а затем читает следующий блок в следующей итерации, из-за чего внутренний цикл for равензапутался.Я попытался дать большое значение буфера:
while($source = gzgets($fp, 409600)) {
, но тогда мой анализ все еще испорчен для какого-то другого странного случая.Как я могу позаботиться об этом?Есть предложения?