<?php
ignore_user_abort(1);
error_reporting(0);
header("Content-Type: text/html; charset=utf-8");
$cat = array();
$xml = new XMLReader();
$xml->open('./yml - Kopie.xml');
while($xml->read() && $xml->name !== 'category');
while($xml->name === 'category'){
$node = new SimpleXMLElement($xml->readOuterXML());
$id = +$xml->getAttribute("id");
$name = ''. $node;
$cat[$id] = $name;
$xml->next('category');
}
$xml->close();
//////////////////////////////
$xml = new XMLReader();
$xml->open('./yml - Kopie.xml');
$allparams = array();
$idparams = array();
while($xml->read() && $xml->name !== 'offer');
while($xml->name === 'offer'){
$node = new SimpleXMLElement($xml->readOuterXML());
$id = +$xml->getAttribute("id");
foreach ($node->param as $param){
$name = ''. $param['name'];
$value = ''. $param;
$allparams[] = ''. $param['name'];
$idparams[$id][$name] = $value;
}
$xml->next('offer');
}
$xml->close();
$allparams = array_unique($allparams);
sort($allparams);
//////////////////////////////
$xml = new XMLReader();
$xml->open('./yml - Kopie.xml');
$flag = true;
while($xml->read() && $xml->name !== 'offer');
while($xml->name === 'offer'){
$node = new SimpleXMLElement($xml->readOuterXML());
$id = $xml->getAttribute("id");
$available = $xml->getAttribute("available");
$url = $node->url;
$price = $node->price;
$currencyId = $node->currencyId;
$delivery = $node->delivery;
$local_delivery_cost = $node->local_delivery_cost;
$typePrefix = $node->typePrefix;
$vendor = $node->vendor;
$vendorCode = $node->vendorCode;
$model = $node->model;
$description = $node->description;
$cpa = $node->cpa;
$weight = $node->weight;
$pickup = $node->pickup;
$c = +$node->categoryId;
$category = $cat[$c];
$picture = '';
foreach ($node->picture as $pic){
$picture .= $pic .' ';
}
if($flag){
$str = '"id";"Наличие";"url товара";"Цена";"Валюта";"Доставка";"Цена доставки";"Тип";"Производитель";"Код производителя";"Модель";"Описание";"Заказ на маркете";"Вес";"url картинки";"Самовывоз";"Категория";';
$j = count($allparams);
while($j-- > 0){
$str .= '"'. $allparams[$j] .'";';
}
$str .= PHP_EOL;
$str = mb_convert_encoding ($str ,"Windows-1251" , "UTF-8" );
$path = fopen("out.csv", "a+");
fwrite($path, $str);
fclose($path);
$flag = false;
}
$params = '';
$j = count($allparams);
while($j-- > 0){
$params .= '"'. $idparams[$id][$allparams[$j]] .'";';
}
$str = '"'. $id .'";';
$str .= '"'. $available .'";';
$str .= '"'. $url .'";';
$str .= '"'. $price .'";';
$str .= '"'. $currencyId .'";';
$str .= '"'. $delivery .'";';
$str .= '"'. $local_delivery_cost .'";';
$str .= '"'. $typePrefix .'";';
$str .= '"'. $vendor .'";';
$str .= '"'. $vendorCode .'";';
$str .= '"'. $model .'";';
$str .= '"'. $description .'";';
$str .= '"'. $cpa .'";';
$str .= '"'. $weight .'";';
$str .= '"'. $picture .'";';
$str .= '"'. $pickup .'";';
$str .= '"'. $category .'";';
$str .= $params;
$str .= PHP_EOL;
$str = mb_convert_encoding ($str ,"Windows-1251" , "UTF-8" );
$path = fopen("out.csv", "a+");
fwrite($path, $str);
fclose($path);
$xml->next('offer');
}
$xml->close();
gc_enable();
echo 'ok';
?>
sed 's#\(<description>\).*\(</description>\)#\1'xxxxx'\2#g' test.xml > test2.xml
- Представление о MVC имею. Раньше писал пару проектов на CodeIgniter, но на нём на мой взгляд мало что есть из коробки, и много времени уходит на разработку.С тех пор изобрели Composer, при должном желании прикручивается он и к CI в том числе :)
- Нужен современный не заброшенный фреймворк, с достаточным количеством документации. Не обязательно на русском, но будет плюсом.На русском - CodeIgniter, на не русском - Laravel, Symfony и другие.
- Хотелось бы большое количество подключаемого функционала из коробки, для экономии времени разработки. Например уже написанная логика авторизации, регистрации, восстановления пароля и разграничения по уровням доступа. Понимаю что всё равно придется немного допиливать под свои нужды, но времени это сэкономило бы кучу.Composer - решает 99% проблем, практически в любом фреймворке.
- Возможность работы с различными БД из коробкиПока фреймворков без этой штуки не видел, но есть... Вы не поверите, Composer, что бы сменить/поставить "другой" ORM, если Вам "текущий" чем-то не подошел.
- Поддержка кэширования из коробки. И желательно что бы была поддержка некешируемых областей при генерации страницы, а сам кэш был управляемым.То о чем Вы говорите, это: Varnish, Nginx+SSI и т.д. кэширование "из коробки" есть в Symfony (т.к. если его отключить, страницы может генерироваться феерически долго)
- Не тяжелый фреймворк, в котором оптимизирован код, и который не жрёт огромное количество ресурсов на сервере. Если будет поддержка PHP7 - тоже плюс.По моему, любой современный фреймворк, если уже даже "Битрикс" небеизвестный до этого до этого дошел... некоторые фреймворки вообще скоро будут требовать PHP7, а не только "поддерживать".
- Проект будет ориентировочно крутиться на nginx+php5-fpm. Думаю практически все фреймворки смогут работать в этой среде, но вдруг...Я пока таких "вдруг" не встречал. Если у админа голова и руки на месте - то никаких "вдруг" быть не должно. А вообще, у PHP версии 5.х, есть как минимум 3 основных "ветки", это <5.3, >=5.3 или 5.4+ и т.д., ещё кое-какие отличия были в 5.5 и 5.6, но не такие "разительные", подробности можно почитать в истории версий PHP. По этому, нужно конкретнее указывать версию, например, Laravel требует 5.6+
- Возможность масштабирования. В принципе не обязательно, но возможно однажды будет масштабироваться проект.Это не возможность фреймворка - а навык программиста/админа.
- Всякие плюшки из коробки типа каптчи, обработки и обрезки изображений и прочие приятности будут огромным плюсом и будут иметь «больший вес» при выборе, т.к. важна простота и скорость разработки.
Большое спасибо за время уделенное прочтению моего вопроса, и огромное спасибо за Ваши ответы.Не за что! Кнопка "Мне нравиться" - сразу под сообщением :D
Найти профессионалов вряд ли получится, потому что зарплаты им платить в соответствии с рынок просто нет возможности, то есть работать они будут в свободное время за возможную долю из прибыли конечного продукта.