Замечаю не первый раз, что функция explode, когда передаешь ей в первом параметре переменную, в которой находится разделитель, разбивает строку во втором параметре не правильно. Почитал документацию по данной функции, об этом в документации умалчивается. А если явно указать разделитель, то строка разбивается правильно. В чем собственно проблема? Исходная строка: "10;ЗИЛ;Двигатель;Автозапчасти;Н0000044;130-1001063;Башмак задней опоры двигателя Зил-130.;161,95 руб.;шт;159,90 руб.;шт;156,50 руб.;шт; ; ;АМО ЗИЛ;01.мар; ;0; ; ;0;ЗИЛ-130,ЗИЛ-433360,ЗИЛ-131" PHP: public function &getCSVPricelist($file,$sep=";"){ $finalPricelist=array(); $name=basename($file); if(!file_exists($file)){ die($this->error('Прайс-листа '.$name.' не существует!')); } $csv=null; $csv=file_get_contents($file); $sepString=$this->getSepWinOrUnix("\r\n","\n"); $allPricelist=null; if(($allPricelist=explode($sepString,$csv))===false){ die($this->error('Ошибка при чтении прайс-листа!')); } $this->deleteEmptyIndexes($allPricelist); $allPricelist=$this->resetIndexesCells($allPricelist); foreach($allPricelist as $k=>$v){ $finalPricelist[$k]=preg_replace('{\s+}si',' ',array_map('trim',explode($sep,$v))); } return $finalPricelist; } $this->error() - вывод сообщения об ошибке. $this->deleteEmptyIndexes($allPricelist) - удаляет индексы с пустыми значениями. $this->resetIndexesCells($allPricelist) - обнуляет индексы, т.е. было 0,5,6,9,10... результат 0,1,2,3,4... $this->getSepWinOrUnix("\r\n","\n") - возвращает разделитель строк, в зависимости от ОС В результате у меня получается массив разбиения одной строки [0] => [1] => 0;ЗИЛ;Двигатель;Автозапчасти;Н0000044; [2] => 30- [3] => 00 [4] => 063;Башмак задней опоры двигателя Зил- [5] => 30.; [6] => 6 [7] => ,95 руб.;шт; [8] => 59,90 руб.;шт; [9] => 56,50 руб.;шт; ; ;АМО ЗИЛ;0 [10] => .мар; ;0; ; ;0;ЗИЛ- [11] => 30,ЗИЛ-433360,ЗИЛ- [12] => 3 [13] =>
не надо издеваться, я просто задал вопрос, т.к. хочу узнать почему так происходит, может где-то я допустил ошибку.
странно, как прошелся дебагером и глянул все переменные, стала работать нормально... мистика какая-то или я дурак...