/** * @param string $content * @return array */ private function parser($content) { $instructions = []; $parseRow = function ($row) { $values = array_filter(array_map(function ($v) { if (is_numeric($v)) { //caso di ID $prod = Product::find($v); if (!empty($prod)) { //var_dump($v, $prod->getName()); die; // -------------------------------------------------------------------- // $ps = Product::whereLike($prod->getName())->limit(1)->get(); // var_dump($ps->toArray()); // die; // -------------------------------------------------------------------- return $prod->id; } } else { return trim($v); } }, explode(';', trim(str_replace(['-', '+'], null, $row)))), function ($v) { return !empty($v); }); if (isset($values[1])) { $values[1] = (double) str_replace(',', '.', str_replace('€', null, $values[1])); } return $values; }; foreach (explode(PHP_EOL, $content) as $row) { //var_dump($row); continue; $row = trim($row); if (empty($row)) { continue; } $start = substr(trim($row), 0, 1); if ($start == '-') { //togli $instructions['del'][] = $parseRow($row); } elseif ($start == '+') { $plusOcc = substr_count($row, '+'); if ($plusOcc == 1) { //add $instructions['add'][] = $parseRow($row); } elseif ($plusOcc == 2) { //insert $instructions['new'][] = $parseRow($row); } } } //die; return $instructions; }