Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $errors = false; //if true then display errors
- $resources = true; //if true then have memory and time unlimited
- $test = 0; //if 0 work normal, if 1 loads test xml from old/test/xml.xml and prints the entire array, if 2 prints just the first 100 products in array
- if ($errors) {
- ini_set('display_errors', '1');
- ini_set('display_startup_errors', '1');
- error_reporting(E_ALL);
- }
- if ($resources) {
- ini_set('memory_limit', '-1');
- ini_set('max_execution_time', '0');
- }
- if ($test == 1 || $test == 2) {
- $xml = simplexml_load_file('old/test/xml.xml');
- } else {
- $xml = simplexml_load_file('https://www.electriclife.gr/product_feed&token=BTiLGZSWy0xscUOJDB8oel4j5EVNfsh3&cat=101,101-Α,102,103,104,105,105-1,106,107,108,109,112,101-1,105-2,106-1,110,111,113,120,121,122,123,124,125,111-Α,122-A,114,115,116,117,118,119,117-1&extras=i,d,m,a,c,f');
- }
- //οι κεντρικές κατηγορίες που περιέχουν υποκατηγορίες που θέλει - ΓΕΝΙΚΟΤΕΡΑ
- $categoriesarray = array(
- 0 => 'BLUETOOTH ΣΥΣΚΕΥΕΣ ΚΑΙ ΚΑΛΩΔΙΩΣΕΙΣ', //
- 1 => 'GPS TRACKERS',
- 2 => 'MONITOR & GPS ΤΖΑΜΙΟΥ',
- 3 => 'PARKING SETS',
- 4 => 'RADIO CD - USB',
- 5 => 'TV TUNERS - DAB TUNERS - TV FREE ΑΝΤΑΠΤΟΡΕΣ',
- 6 => 'ΑΝΑΚΤΗΣΗ ΕΡΓΟΣΤΑΣΙΑΚΗΣ ΚΑΜΕΡΑΣ, USB, PARKING',
- 7 => 'ΑΝΤΑΛΛΑΚΤΙΚΑ ΗΛΕΚΤΡ ΚΙΝΗΤΗΡΑ',
- 8 => 'ΕΞΑΡΤΗΜΑΤΑ ΤΟΠΟΘΕΤΗΣΗΣ ΠΗΓΗΣ',
- 9 => 'ΗΧΕΙΑ - ΕΝΙΣΧΥΤΕΣ - ΒΑΣΕΙΣ ΗΧΕΙΩΝ - ΓΡΙΛΛΙΕΣ',
- 10 => 'ΚΑΜΕΡΕΣ',
- 11 => 'ΚΑΤΑΓΡΑΦΙΚΑ (D.V.R)',
- 12 => 'ΚΕΡΑΙΕΣ και ΠΑΡΕΛΚΟΜΕΝΑ',
- 13 => 'ΜΙΚΡΟΦΩΝΙΚΕΣ ΕΓΚΑΤΑΣΤΑΣΕΙΣ',
- 14 => 'ΟΘΟΝΕΣ και ΣΥΝΑΦΗ ΟΘΟΝΩΝ',
- 15 => 'ΣΥΝΑΓΕΡΜΟΙ ΓΙΑ ΜΟΤΟΣΙΚΛΕΤΕΣ',
- 16 => 'ΣΥΝΑΓΕΡΜΟΙ - ΣΥΣΤΗΜΑΤΑ ΑΝΤΙΚΛΟΠΗΣ [ΓΙΑ ΑΥΤΟΚΙΝΗΤΑ]',
- 17 => 'ΣΥΝΔΕΣΗ AUDIO - VIDEO ΣΕ ΕΡΓΟΣΤΑΣΙΑΚΗ ΠΗΓΗ',
- 18 => 'ΣΥΝΔΕΣΗ USB - SD - Iphone ΣΕ ΕΡΓΟΣΤΑΣΙΑΚΗ ΠΗΓΗ',
- 19 => 'ΦΩΤΙΣΜΟΣ HEADLIGHTS αναζητηση βασει ΤΥΠΟΥ ΛΑΜΠΑΣ',
- 20 => 'ΦΩΤΙΣΜΟΣ ΛΑΜΠΕΣ ΕΙΔΙΚΩΝ ΘΕΣΕΩΝ',
- );
- //οι μικτές κεντρικές κατηγορίες όπου περιέχουν και υποκατηγορίες που θέλει αλλά και άλλες που δεν θέλει
- $categoriesarraymiktes = array(
- 0 => 'GPS TRACKERS', //
- 1 => 'MONITOR & GPS ΤΖΑΜΙΟΥ',
- 2 => 'MONITOR & GPS ΤΖΑΜΙΟΥ',
- 3 => 'PARKING SETS',
- 4 => 'RADIO CD - USB',
- 5 => 'ΑΝΑΚΤΗΣΗ ΕΡΓΟΣΤΑΣΙΑΚΗΣ ΚΑΜΕΡΑΣ, USB, PARKING',
- 6 => 'ΑΝΤΑΛΛΑΚΤΙΚΑ ΗΛΕΚΤΡ ΚΙΝΗΤΗΡΑ',
- 7 => 'ΕΞΑΡΤΗΜΑΤΑ ΤΟΠΟΘΕΤΗΣΗΣ ΠΗΓΗΣ',
- 8 => 'ΗΧΕΙΑ - ΕΝΙΣΧΥΤΕΣ - ΒΑΣΕΙΣ ΗΧΕΙΩΝ - ΓΡΙΛΛΙΕΣ',
- 9 => 'ΚΑΜΕΡΕΣ',
- 10 => 'ΚΕΡΑΙΕΣ και ΠΑΡΕΛΚΟΜΕΝΑ',
- 11 => 'ΟΘΟΝΕΣ και ΣΥΝΑΦΗ ΟΘΟΝΩΝ',
- 12 => 'ΣΥΝΑΓΕΡΜΟΙ ΓΙΑ ΜΟΤΟΣΙΚΛΕΤΕΣ',
- 13 => 'ΣΥΝΑΓΕΡΜΟΙ - ΣΥΣΤΗΜΑΤΑ ΑΝΤΙΚΛΟΠΗΣ [ΓΙΑ ΑΥΤΟΚΙΝΗΤΑ]',
- 14 => 'ΣΥΝΔΕΣΗ AUDIO - VIDEO ΣΕ ΕΡΓΟΣΤΑΣΙΑΚΗ ΠΗΓΗ',
- 15 => 'ΣΥΝΔΕΣΗ USB - SD - Iphone ΣΕ ΕΡΓΟΣΤΑΣΙΑΚΗ ΠΗΓΗ',
- 16 => 'ΦΩΤΙΣΜΟΣ ΛΑΜΠΕΣ ΕΙΔΙΚΩΝ ΘΕΣΕΩΝ',
- );
- //οι τελικές κατηγορίες δένδρου προς έλεγχο τις οποίες θέλει ο πελάτης
- $categoriesarraylastcat = array(
- 0 => 'ΟΧΗΜΑΤΩΝ 12 / 24V',
- 1 => 'ΦΟΡΗΤΑ - PORTABLE',
- 2 => 'ΑΚΟΥΣΤΙΚΑ ΓΙΑ ΜΟΝΙΤΟΡ',
- 3 => 'ΜΟΝΙΤΟΡ ΠΡΟΣΚΕΦΑΛΩΝ',
- 4 => 'ΜΟΝΙΤΟΡ ΑΠΛΑ ΜΕ ΒΑΣΗ',
- 5 => 'ΜΟΝΙΤΟΡ ΜΕ GPS - ΒΤ - ΕΙΣΟΔΟ ΚΑΜΕΡΑΣ',
- 6 => 'MONITOR HD ΜΕ ΒΑΣΗ | HIGH DEFINITION',
- 7 => 'PARKING ΜΕ 4 ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΕΜΠΡΟΣ',
- 8 => 'PARKING ΣΤΗΝ ΠΙΝΑΚΙΔΑ',
- 9 => 'PARKING ΜΕ 4 ΑΙΣΘΗΤΗΡΕΣ ΓΙΑ ΠΙΣΩ',
- 10 => 'ΜΕ ΚΑΘΡΕΠΤΗ ΚΑΙ ΚΑΜΕΡΑ',
- 11 => 'RADIO CD - RADIO USB - RADIO DVD',
- 12 => '1. TUNER TV',
- 13 => '2. TUNER RADIO DAB (DIGITAL AUDIO)',
- 14 => 'ΑΝΑΚΤΗΣΗ ΕΡΓΟΣΤΑΣΙΑΚΗΣ ΚΑΜΕΡΑΣ - PARKING',
- 15 => '07. ΔΙΑΚΟΠΤΕΣ ΤΑΜΠΛΩ,ΚΑΜΠΙΝΑΣ [διαφοροι)',
- 16 => '87mm ΗΧΕΙΑ',
- 17 => '100mm ΗΧΕΙΑ - 4 ιντσες',
- 18 => '130mm ΗΧΕΙΑ - 5 ιντσες',
- 19 => '165mm ΗΧΕΙΑ - 6 ιντσες',
- 20 => 'ΒΑΣΕΙΣ ΗΧΕΙΩΝ',
- 21 => 'ΑΠΟΣΤΑΤΕΣ ΗΧΕΙΩΝ - ΤΣΕΠΕΣ ΗΧΕΙΩΝ',
- 22 => 'MARINE ΗΧΕΙΑ για σκάφη',
- 23 => 'ΗΧΕΙΑ ΦΟΡΗΤΑ ΜΕ BLUETOOTH',
- 24 => 'ΚΑΛΩΔΙΑ ΣΥΝΔΕΣΗΣ VIDEO (RCA)',
- 25 => 'ΚΑΜΕΡΕΣ OEM ΓΙΑ ΕΡΓΟΣΤΑΣΙΑΚΗ ΘΕΣΗ',
- 26 => 'ΚΑΜΕΡΕΣ UNIVERSAL',
- 27 => 'ΣΥΝΔΕΣΗ ΟΕΜ ΚΑΜΕΡΑΣ ΣΕ ΠΗΓΗ ΕΜΠΟΡΙΟΥ',
- 28 => 'ΚΑΜΕΡΕΣ UNIVERSAL HD | HIGH DEFINITION',
- 29 => 'ΚΕΡΑΙΕΣ ΡΑΔΙΟΦΩΝΟΥ FM',
- 30 => 'ΕΝΙΣΧΥΤΕΣ ΚΕΡΑΙΑΣ & ΚΕΡΑΙΕΣ ΜΕ ΕΝΙΣΧΥΤΗ',
- 31 => 'ΜΙΚΡΟΦΩΝΑ σκετα',
- 32 => '1-DIN ΠΗΓΕΣ UNIVERSAL',
- 33 => 'ΟΕΜ ΠΗΓΕΣ ΕΡΓΟΣΤΑΣΙΑΚΟΥ ΤΥΠΟΥ',
- 34 => '2-DIN ΠΗΓΕΣ UNIVERSAL',
- 35 => 'CAR PLAY',
- 36 => 'ΟΘΟΝΕΣ UNIVERSAL ΑΝΩ ΚΟΝΣΟΛΑ',
- 37 => 'DVR - ΚΑΤΑΓΡΑΦΙΚΑ',
- 38 => 'OPTICAL BOX',
- 39 => 'ΤABLET',
- 40 => 'ANDROID STREAMING',
- 41 => 'ΣΥΝΑΓΕΡΜΟΙ ΜΟΤΟΣΙΚΛΕΤΑΣ',
- 42 => 'ΣΥΝΑΓΕΡΜΟΙ CAN BUS',
- 43 => 'ΣΥΝΑΓΕΡΜΟΙ ΑΝΑΛΟΓΙΚΟΙ',
- 44 => 'ΣΥΝΑΓΕΡΜΟΙ 24V',
- 45 => 'ΣΥΣΚΕΥΕΣ ΑΝΤΙΚΛΟΠΗΣ ΠΡΟΣΤΑΣΙΑΣ',
- 46 => 'ΣΥΝΔΕΣΗ AUDIO ΣΕ ΕΡΓΟΣΤΑΣΙΑΚΗ ΠΗΓΗ',
- 47 => 'ΣΥΝΔΕΣΗ ΚΑΜΕΡΑΣ Ή TUNER ΣΕ ΕΡΓΟΣΤΑΣΙΑΚΗ ΠΗΓΗ',
- 48 => 'ΣΥΝΔΕΣΗ USB - SD - Iphone ΣΕ ΕΡΓΟΣΤΑΣΙΑΚΗ ΠΗΓΗ',
- 49 => '2. XENON',
- 50 => '1. LED',
- 51 => 'ΣΩΛΗΝΩΤΑ - ΠΛΑΦΟΝΙΕΡΑΣ',
- 52 => 'ΜΕ ΚΑΛΥΚΑ',
- 53 => 'ΑΚΑΛΥΚΑ',
- 54 => 'ΜΕ ΕΙΔΙΚΗ ΒΑΣΗ',
- 55 => 'CAN BUS ΓΙΑ ΛΑΜΠΑΚΙΑ ΕΙΔΙΚΩΝ ΘΕΣΕΩΝ',
- 56 => 'Δείτε όλα τα προϊόντα',
- );
- $i = 0;
- while ($i < count($xml->products->product)) {
- $maincategory = preg_replace('/[\s\p{Zs}]*$/u', '',explode(">", $xml->products->product[$i]->site_category)[0]);
- $lastcategory = preg_replace('/^[\s\p{Zs}]|[\s\p{Zs}]$/u', '',explode(">", $xml->products->product[$i]->site_category)[2]);
- $fullcategorytree = (string) $xml->products->product[$i]->site_category;
- if (in_array($maincategory, $categoriesarray)) {
- if (in_array($maincategory, $categoriesarraymiktes)) {
- if (in_array($lastcategory, $categoriesarraylastcat)) {
- $pinakas[$i] = array(
- 'unique_id' => (string) $xml->products->product[$i]->unique_id,
- 'code' => (string) $xml->products->product[$i]->code,
- 'name' => (string) $xml->products->product[$i]->name,
- 'description' => (string) $xml->products->product[$i]->description,
- 'extra_description' => (string) $xml->products->product[$i]->extra_description,
- 'maincategory' => $maincategory,
- 'category' => (string) $xml->products->product[$i]->site_category,
- 'categorytree' => $fullcategorytree,
- 'quantity' => (string) $xml->products->product[$i]->quantity_ath + (string) $xml->products->product[$i]->quantity_thes,
- 'instock' => (string) $xml->products->product[$i]->instock,
- 'price' => (string) $xml->products->product[$i]->price,
- 'filters' => (string) $xml->products->product[$i]->filters,
- 'image' => (string) $xml->products->product[$i]->image,
- 'extra_images' => str_replace(":::", "|", (string) $xml->products->product[$i]->extra_images),
- 'attribute' => (string) $xml->products->product[$i]->attribute,
- );
- foreach($xml->products->product[$i] as $key => $value){
- if($key == "attribute_group"){
- $attribute_group = array();
- foreach($value->children() as $attribute) {
- $attribute_group[(string)$attribute['name']] = (string)$attribute;
- }
- $pinakas[$i]['attribute_group'] = $attribute_group;
- }elseif(!($key == "site_category" || $key == "quantity_ath" || $key == "quantity_thes")) {
- $pinakas[$i][$key] = (string) $value;
- }
- }
- handle_element($xml->products->product[$i], $pinakas, $i);
- }
- } else {
- $pinakas[$i] = array(
- 'unique_id' => (string) $xml->products->product[$i]->unique_id,
- 'code' => (string) $xml->products->product[$i]->code,
- 'name' => (string) $xml->products->product[$i]->name,
- 'description' => (string) $xml->products->product[$i]->description,
- 'maincategory' => $maincategory,
- 'category' => (string) $xml->products->product[$i]->site_category,
- 'categorytree' => $fullcategorytree,
- 'quantity' => (string) $xml->products->product[$i]->quantity_ath + (string) $xml->products->product[$i]->quantity_thes,
- 'instock' => (string) $xml->products->product[$i]->instock,
- 'price' => (string) $xml->products->product[$i]->price,
- 'filters' => (string) $xml->products->product[$i]->filters,
- 'image' => (string) $xml->products->product[$i]->image,
- 'extra_images' => str_replace(":::", "|", (string) $xml->products->product[$i]->extra_images),
- 'attribute' => (string) $xml->products->product[$i]->attribute,
- );
- foreach($xml->products->product[$i] as $key => $value){
- if($key == "attribute_group"){
- $attribute_group = array();
- foreach($value->children() as $attribute) {
- $attribute_group[(string)$attribute['name']] = (string)$attribute;
- }
- $pinakas[$i]['attribute_group'] = $attribute_group;
- }elseif(!($key == "site_category" || $key == "quantity_ath" || $key == "quantity_thes")) {
- $pinakas[$i][$key] = (string) $value;
- }
- }
- handle_element($xml->products->product[$i], $pinakas, $i);
- }
- }
- $i++;
- }
- function handle_element($xml_element, &$pinakas, $i) {
- foreach($xml_element as $key => $value) {
- if($key == "attribute_group"){
- $attribute_group = array();
- foreach($value->children() as $attribute) {
- $attribute_group[(string)$attribute['name']] = (string)$attribute;
- }
- $pinakas[$i]['attribute_group'] = $attribute_group;
- }elseif(!($key == "site_category" || $key == "quantity_ath" || $key == "quantity_thes")) {
- $pinakas[$i][$key] = (string) $value;
- }
- if($value->children()) { // If the element has sub-elements
- handle_element($value, $pinakas, $i); // Call the function again to handle the sub-elements
- }
- }
- }
- $pinakas = array_values($pinakas);
- if ($test == 1 || $test == 2) {
- echo "<pre>";
- if ($test == 1) {
- print_r($pinakas);
- } else {
- print_r(array_slice($pinakas, 0, 100));
- }
- echo "</pre>";
- } else {
- $i = 0;
- $finalxmlpart1 = '<?xml version="1.0" encoding="UTF-8"?>
- <electriclife>
- <products>
- ';
- while ($i < count($pinakas)) {
- $finalxmlpart2[] = ' <product>
- <unique_id>'.$pinakas[$i]['unique_id'].'</unique_id>
- <code><![CDATA['.$pinakas[$i]['code'].']]></code>
- <name><![CDATA['.$pinakas[$i]['name'].']]></name>
- <description><![CDATA['.$pinakas[$i]['description'].']]></description>
- <extra_description><![CDATA['.$pinakas[$i]['extra_description'].']]></extra_description>
- <maincategory><![CDATA['.$pinakas[$i]['maincategory'].']]></maincategory>
- <category><![CDATA['.$pinakas[$i]['category'].']]></category>
- <categorytree><![CDATA['.$pinakas[$i]['categorytree'].']]></categorytree>
- <quantity>'.$pinakas[$i]['quantity'].'</quantity>
- <instock>'.$pinakas[$i]['instock'].'</instock>
- <price>'.$pinakas[$i]['price'].'</price>
- <image><![CDATA['.$pinakas[$i]['image'].']]></image>
- <extra_images><![CDATA['.$pinakas[$i]['extra_images'].']]></extra_images>
- <attribute><![CDATA['.$pinakas[$i]['attribute'].']]></attribute>';
- if (!empty($pinakas[$i]['filters'])) {
- $filters = explode(":::", $pinakas[$i]['filters']);
- $brands = [];
- $models = [];
- $dates = [];
- foreach ($filters as $filter) {
- list($brand, $model, $date) = explode("|", $filter);
- $brands[] = $brand;
- $models[] = $model;
- $dates[] = $date;
- }
- $finalxmlpart2[] = ' <filters>
- <brand><![CDATA['.implode("|", $brands).']]></brand>
- <model><![CDATA['.implode("|", $models).']]></model>
- <date><![CDATA['.implode("|", $dates).']]></date>
- </filters>';
- }
- if(isset($pinakas[$i]['attribute_group'])){
- $finalxmlpart2[] = ' <attribute_group>';
- foreach ($pinakas[$i]['attribute_group'] as $key => $value) {
- $key = str_replace("/", "",str_replace("-", "_",str_replace(".", "",str_replace(" ", "", $key))));
- $key = str_replace(")", "",str_replace("(", "", $key));
- $finalxmlpart2[] = ' <'.$key.'><![CDATA['.$value.']]></'.$key.'>';
- }
- $finalxmlpart2[] = ' </attribute_group>';
- }
- $finalxmlpart2[] = ' </product>';
- $i++;
- }
- $finalxmlpart3 = ' </products>
- </electriclife>';
- $finalxml = $finalxmlpart1.implode("\n", $finalxmlpart2).$finalxmlpart3;
- file_put_contents('electriclife.xml', $finalxml);
- echo "done";
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement