Пример #1
0
 /**
  * @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;
 }