Advertisement
Guest User

Untitled

a guest
Apr 6th, 2011
1,746
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. ini_set("max_execution_time", 0);
  3.  
  4. $id = 50322;
  5. # здесь нужно организовать цикл для перебора всех товаров
  6. parse ($id);
  7.  
  8. function parse ($id)
  9. {
  10.     $file = file_get_contents("http://parfum-collection.ru/product/{$id}.html");
  11.     $data = array();
  12.     if ($file)
  13.     {
  14.         preg_match("|<!-- Товар  /-->(.*)<!-- Характеристики товара #END /-->|is", $file, $trunc);
  15.        
  16.         # если это товар, значит в $trunc[1] будет какой то контент, если же такой страницы не существует, значит такого товара нет
  17.         if (isset ($trunc[1]))
  18.         {
  19.            
  20.             # name
  21.             preg_match("|<h1>(.*)</h1>|Uis", $trunc[1], $temp);
  22.             $name = (isset($temp[1])) ? trim($temp[1]) : '';
  23.             $data['name'] = $name;
  24.            
  25.             # path
  26.             $path = array();
  27.             preg_match("|<div id=\"path\">(.*)</div>|Uis", $trunc[1], $temp);
  28.             if (isset($temp[1]))
  29.             {
  30.                 $d = explode ('→', $temp[1]);
  31.                 unset ($d[sizeof($d)-1]);
  32.                 unset ($d[0]);
  33.                
  34.                 foreach ($d as $key => $val)
  35.                 {
  36.                     preg_match("|<a href=\"(.*)\">(.*)</a>|Uis", $val, $temp);
  37.                     if (isset($temp[1]))
  38.                     {
  39.                         $path[$key]['url'] = $temp[1];
  40.                         $path[$key]['path'] = $temp[2];
  41.                     }
  42.                    
  43.                 }
  44.             }
  45.             $data['path'] = $path;
  46.            
  47.            
  48.             #img
  49.             $img = array();
  50.             preg_match_all("|attr\(\'src\', \'(.*)\'|Uis", $trunc[1], $temp);
  51.             if (isset ($temp[1]))
  52.             {
  53.                 foreach ($temp[1] as $key => $val)
  54.                 {
  55.                     $img[$key]['url'] = $val;
  56.                 }
  57.             }
  58.             # здесь можно добавить обработчик для сохранения всех картинок
  59.             $data['img'] = $img;
  60.            
  61.             # price
  62.             $price = array();
  63.             preg_match("|<!-- Варианты товара /-->(.*)<!-- Варианты товара #END /-->|is", $trunc[1], $prices);
  64.            
  65.            
  66.             preg_match_all("|<option value=\"(\d+)\">(.*)</option>|Uis", $prices[1], $temp);
  67.             if (isset ($temp[1]))
  68.             {
  69.                 foreach ($temp[1] as $key => $val)
  70.                 {
  71.                     $price[$val]['text'] = trim ($temp[2][$key]);
  72.                 }
  73.             }
  74.             preg_match_all("|variants_prices\[(\d+)\] = \'(.*)\'|Uis", $prices[1], $temp);
  75.             if (isset ($temp[1]))
  76.             {
  77.                 foreach ($temp[1] as $key => $val)
  78.                 {
  79.                     $price[$val]['cost'] = trim ($temp[2][$key]);
  80.                 }
  81.             }  
  82.             $data['price'] = $price;
  83.            
  84.             # text
  85.             preg_match("|</form>(.*)<!-- Характеристики товара /-->|is", $trunc[1], $temp);
  86.             preg_match("|<p>(.*)</p>|is", $temp[1], $temp);
  87.             $text = (isset($temp[1])) ? trim($temp[1]) : '';
  88.             $data['text'] = $text;
  89.            
  90.             # params
  91.             $params = array();
  92.             preg_match_all("|<tr>(.*)</tr>|Uis", $trunc[1], $temp);
  93.             if (isset ($temp[1]))
  94.             {
  95.                 foreach ($temp[1] as $key => $val)
  96.                 {
  97.                     preg_match_all("|<td>(.*)</td>|Uis", $val, $td);
  98.                     if (isset ($td[1]))
  99.                     {
  100.                         $params[$key]['text'] = trim($td[1][0]);
  101.                         $params[$key]['values'] = explode (',&nbsp;', trim($td[1][1]));
  102.                        
  103.                         foreach ($params[$key]['values'] AS $k => &$v)
  104.                         {
  105.                             $v = trim ($v);
  106.                         }
  107.                        
  108.                     }
  109.                 }
  110.             }
  111.             $data['params'] = $params;
  112.         }
  113.     }
  114.     else
  115.     {
  116.         # ошибка получения страницы.
  117.     }
  118. }  
  119. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement