Помощь по написанию парсера

Тема в разделе "PHP", создана пользователем flat73, 16 мар 2011.

Модераторы: latteo
  1. flat73

    flat73 Постоялец

    Регистр.:
    15 авг 2008
    Сообщения:
    55
    Симпатии:
    2
    Написал вот такой код:
    PHP:
    <?php
    $url
    ="http://en.def-shop.com/Ak-cess/Men/Overwear/Sweatshirts/Zip-Hoodies/Akcess-Coat-Of-Arms-Zip-Hoody-Cream.html";
    $content=file_get_contents($url);
    $teg_in="<select class=\"product_info_size\"";
    $teg_out="</select>";
    $position=strpos($content,$teg_in);
    $content=substr($content,$position);
    $position=strpos($content,$teg_out);
    $content=substr($content,0,$position);
    $content=strip_tags($content);
    $content=str_replace("choose your size","",$content);
    //Открываем файл
    $fp=fopen("kod.txt",'w');
    //Запись в файл
    $ft=fwrite($fp,$content);
    $ft=str_replace("choose your size","",$fp);
    //Закрываем файл
    fclose($fp);
    ?>
    На выводе появляется текстовый файл с содержанием:
    S (+ 4 in stock) M (+ 4 in stock) L (+ 4 in stock) XL (+ 4 in stock) XXL (+ 4 in stock) XXXL (+ 4 in stock)
    Вопрос:
    1. Как убрать не нужную надпись (+ 4 in stock)? надпись может меняться к примеру (+ 2 in stock)
    2. Как сделать так чтобы каждый размер присвоился определенной переменой ($s=s; $m=m; и т.д.)
    Заранее спасибо!
     
  2. frantz1488

    frantz1488

    Регистр.:
    21 мар 2010
    Сообщения:
    162
    Симпатии:
    43
    пример ща дать не могу но рыть надо в сторону preg_match
     
  3. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    PHP:
    $data 'S (+ 4 in stock) M (+ 4 in stock) L (+ 4 in stock) XL (+ 4 in stock) XXL (+ 4 in stock) XXXL (+ 4 in stock) ';
    preg_match_all('/(\w+) \(\+ \d+ in stock\)/is'$data$mPREG_PATTERN_ORDER);
    в $m[1] будет массив с размерами.
     
  4. flat73

    flat73 Постоялец

    Регистр.:
    15 авг 2008
    Сообщения:
    55
    Симпатии:
    2

    Еси не трудно можно написать полностью код как будет с массимвом, я только новичко еще и плохе себе представляю как это будет выглядеть.
     
  5. Maza

    Maza

    Регистр.:
    3 июл 2007
    Сообщения:
    255
    Симпатии:
    118
    Код не забываем обрамлять тэгами
    PHP:
     )
    [PHP]
    <?php
    $url
    ="http://en.def-shop.com/Ak-cess/Men/Overwear/Sweatshirts/Zip-Hoodies/Akcess-Coat-Of-Arms-Zip-Hoody-Cream.html";
    $content=file_get_contents($url);
    $teg_in="<select class=\"product_info_size\"";
    $teg_out="</select>";
    $position=strpos($content,$teg_in);
    $content=substr($content,$position);
    $position=strpos($content,$teg_out);
    $content=substr($content,0,$position);
    $content=strip_tags($content);
    $content=str_replace("choose your size","",$content);

    print 
    $content;
    preg_match_all('/(\w+) \(\+ \d+ in stock\)/is'$content$mPREG_PATTERN_ORDER);

    //Открываем файл
    $fp=fopen("kod.txt",'w');

    $allsize count($m[1]);
    for (
    $i 1;$i $allsize;$i++){
        
    //Запись в файл    
        
    $ft=fwrite($fp,$m[1][$i]."\n");
    }
        
    $ft=str_replace("choose your size","",$fp);
    //Закрываем файл
    fclose($fp);
    ?>
     
  6. VandJ

    VandJ

    Регистр.:
    8 апр 2008
    Сообщения:
    318
    Симпатии:
    113
    PHP:
    $url="http://en.def-shop.com/Ak-cess/Men/Overwear/Sweatshirts/Zip-Hoodies/Akcess-Coat-Of-Arms-Zip-Hoody-Cream.html";
    $content=file_get_contents($url);
    $teg_in="<select class=\"product_info_size\"";
    $teg_out="</select>";
    $position=strpos($content,$teg_in);
    $content=substr($content,$position);
    $position=strpos($content,$teg_out);
    $content=substr($content,0,$position);
    preg_match_all ('#<option value="\d">(.*?)\s#',$content,$matches);
    $fp=fopen("kod.txt",'w');
    for(
    $i=0$i<count($matches[1]); $i++){
        
    $ft=fwrite($fp,$matches[1][$i].' ');
    }
    fclose($fp);
    PHP:
    $url="http://en.def-shop.com/Ak-cess/Men/Overwear/Sweatshirts/Zip-Hoodies/Akcess-Coat-Of-Arms-Zip-Hoody-Cream.html";
    $content=file_get_contents($url);
    $teg_in="<select class=\"product_info_size\"";
    $teg_out="</select>";
    $position=strpos($content,$teg_in);
    $content=substr($content,$position);
    $position=strpos($content,$teg_out);
    $content=substr($content,0,$position);
    preg_match_all ('#<option value="\d">(.*?)\s#',$content,$matches);
    for(
    $i=0$i<count($matches[1]); $i++){
        
    $razmer[$matches[1][$i]] = $matches[1][$i];
    }
    print_r ($razmer); //Array ( [S] => S [M] => M [L] => L [XL] => XL [XXL] => XXL [XXXL] => XXXL )
    В переменной $razmer['S'] будет размер S и т.д.
     
    flat73 нравится это.