Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с preg_match [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
DlTA
Отправлено: 09 Декабря, 2011 - 22:36:33
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ну тада
пример полного текста, код которым это обрабатывается
 
 Top
Belohalatny
Отправлено: 09 Декабря, 2011 - 22:45:30
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. echo '<pre>';
  3. echo "[ ".date('H:i:s')." ] - Начинаем работу.\r\n";
  4. include "sku.php";
  5.      
  6.     function get($url, $prox)
  7.     {
  8.         $ch = curl_init();
  9.         curl_setopt($ch, CURLOPT_URL, $url);
  10.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  11.         curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
  12.         curl_setopt($ch, CURLOPT_PROXY, "$prox");
  13.         curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
  14.         curl_setopt($ch, CURLOPT_TIMEOUT, 15);
  15.         $ss=curl_exec($ch);
  16.         $info = curl_getinfo($ch);
  17.         $error = curl_error($ch).'('.curl_errno($ch).')'.' ['.$info['http_code'].']';
  18.         curl_close($ch);
  19.         if(file_exists('put.html'))unlink('put.html');
  20.         file_put_contents('put.html', $ss);
  21.         return $ss;
  22.     }
  23.      
  24.     function get_proxy(){
  25.             $proxylist = 'proxy.txt';
  26.             $prox = array();
  27.         if(is_file($proxylist)){
  28.                     $handle = fopen($proxylist, "r");
  29.             while (($data = fgetcsv($handle, 40)) !== FALSE) $prox[] = $data[0];
  30.                     fclose($handle);
  31.                     return $prox;
  32.         }
  33.             else return false;
  34.     }
  35.      
  36.     $prox=get_proxy();
  37.    
  38.  
  39.     for($i=0, $t=count($product_sku); $i < $t; $i++) {
  40.     $content="";
  41.     if(count($prox)==0) $prox=get_proxy();
  42.                            while(strlen($content)<1){
  43.                            $content = get("http://домен/price.aspx?pcode=".$product_sku[$i][0], $prox[0]);
  44.                            
  45.                            if($content=='' OR strpos($content, 'Превышено число запросов к базе данных за час') !== false) {
  46.                            array_shift ($prox);
  47.                            $content='';
  48.                            echo "[ ".date('H:i:s')." ] - ".$product_sku[$i][0]." Блокировка прокси ".$prox[0].", пробуем следующую.\r\n";
  49.                            continue;
  50.                            }
  51.                            
  52.                            elseif($content=='' OR strpos($content, 'Access Denied') OR strpos($content, 'Proxy Authentication Required') !== false) {
  53.                            array_shift ($prox);
  54.                            $content='';
  55.                            echo "[ ".date('H:i:s')." ] - ".$product_sku[$i][0]." Прокся ".$prox[0]." не работает!\r\n";
  56.                            continue;
  57.                            }    
  58.                            
  59.                            elseif($content=='' OR strpos($content, 'Not Found') !== false) {
  60.                            sleep(1800);
  61.                            continue;
  62.                            }
  63.                            
  64.                            elseif($content=='' OR strpos($content, 'заблокирован на 1 час') !== false) {
  65.                            array_shift ($prox);
  66.                            $content='';
  67.                            echo "[ ".date('H:i:s')." ] - ".$product_sku[$i][0]." Проксю ".$prox[0]." забанили на час!\r\n";
  68.                            continue;
  69.                            }    
  70.                            
  71.                            elseif($content=='' OR strpos($content, 'найден в каталогах следующих фирм:') !== false){
  72.                            echo "[ ".date('H:i:s')." ] - ".$product_sku[$i][0]." текст!\r\n";
  73.                            preg_match("/VAG<\/td><td>(.+)<\/td>.+\s(?:href|src|url)?=(?:[\"\'])?([^\"\']+)[\"\']?/is", $content, $arrr);
  74.                                print_r($arrr);
  75.                            // unset($product_sku[$i]);
  76.                            //array_push($product_sku[$i], "0");
  77.                            //array_shift ($prox);
  78.                            continue;
  79.                            }
  80.                            
  81.                            elseif(preg_match('|<td class="price" align="right".*?>(.*)р.</td>|', $content, $arr)){
  82.                            $arr[1] = preg_replace('/[^\d,]+/', '', $arr[1]);
  83.                            $arr[1] = str_replace(",",".",$arr[1]);
  84.                            array_push($product_sku[$i], $arr[1]);
  85.                            continue;
  86.                            }
  87.                            if($product_sku[$i][2] !== "0") {
  88.                            echo "[ ".date('H:i:s')." ] - ".$product_sku[$i][0]." Успешно.\r\n";
  89.                            sleep(rand(1,40));
  90.                            }
  91.                            }
  92.                            }
  93.  
  94. $file = fopen ('result.csv', 'w');
  95. foreach($product_sku as $key => $value){
  96. settype($product_sku[$key][1], "float");
  97. settype($product_sku[$key][2], "float");
  98. $price = bcsub($product_sku[$key][2], $product_sku[$key][1], 2);
  99.         array_push($product_sku[$key], $price);
  100.         unset($price);
  101. settype($product_sku[$key][3], "float");
  102. $price = bcdiv($product_sku[$key][3], $product_sku[$key][1], 4);
  103. $price = $price * 100;
  104.         array_push($product_sku[$key], $price);
  105.  
  106. fputcsv($file, $product_sku[$key], ',');
  107. }
  108. fclose ($file);
  109.                            
  110.     echo "<pre>";
  111.     print_r($product_sku);
  112.     echo "</pre>";
  113.  
  114. ?>


CODE (html):
скопировать код в буфер обмена
  1. <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBQK+n5HPBAKE/5LrAgKBnpDPDQLQuqTtBgLHn7qXDw==" /><b></b><div class="tablerowheader"> Указанный артикул "000098654A" найден в каталогах следующих фирм:</div><div>
  2.  
  3.         <table class="tbl" cellspacing="1" cellpadding="4" id="gvFirmList" width="100%">
  4.  
  5.                 <tr class="trh">
  6.  
  7.                         <th scope="col">Фирма</th><th scope="col">Описание</th><th scope="col">Цены и заменители</th>
  8.  
  9.                 </tr><tr onclick="getpr('D88072DF','-4'); return false;" style="cursor:pointer;">
  10.  
  11.                         <td width="150">Sealed power</td><td>&nbsp;</td><td align="center" width="100"><b><a class="linkPtr" href="price.aspx?pid=D88072DF"> поиск</a></b></td>
  12.  
  13.                 </tr><tr onclick="getpr('D7F040BA','-4'); return false;" style="cursor:pointer;">
  14.  
  15.                         <td width="150">VAG</td><td>Кабель антенны</td><td align="center" width="100"><b><a class="linkPtr" href="price.aspx?pid=D7F040BA"> поиск</a></b></td>
  16.  
  17.                 </tr>
  18.  
  19.         </table>
  20.  
  21. </div><div>
  22.  
  23.  
  24.  

кусок кода страницы, который нужно обрабатывать. весь код показать не могу, кому надо, тот догадается что это за сайт, извиняйте уж...
 
 Top
DlTA
Отправлено: 09 Декабря, 2011 - 23:00:02
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




а у меня работает
Спойлер (Отобразить)


CODE (text):
скопировать код в буфер обмена
  1. Array
  2. (
  3.     [0] => VAG</td><td>Кабель антенны</td><td align="center" width="100"><b><a class="linkPtr" href="price.aspx?pid=D7F040BA"
  4.     [1] => Кабель антенны
  5.     [2] => price.aspx?pid=D7F040BA
  6. )

(Добавление)
а в браузере выглядит вот так
Array ( [0] => VAGКабель антенны Кабель антенны [2] => price.aspx?pid=D7F040BA )
 
 Top
Belohalatny
Отправлено: 09 Декабря, 2011 - 23:06:37
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Ваш спойлер у меня тоже работает, но как только я переношу это в основной код, опять получается тоже самое, как и было...
 
 Top
DlTA
Отправлено: 09 Декабря, 2011 - 23:11:31
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




скопируйте подгружаемый текст в мой код (не забудьте экранирывать кавычки)
и проверьте

скорее всего ошибка не в регулярке
 
 Top
Belohalatny
Отправлено: 09 Декабря, 2011 - 23:39:51
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Ну да, все работает с полным кодом... а как теперь быть то?
 
 Top
DlTA
Отправлено: 10 Декабря, 2011 - 00:37:15
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




искать в каком месте происходит подмена валидных данных не валидными и исправлять
 
 Top
Belohalatny
Отправлено: 10 Декабря, 2011 - 09:14:35
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Тёмный лес для меня пока... Можете помочь с этим?
 
 Top
Belohalatny
Отправлено: 11 Декабря, 2011 - 13:11:31
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Нояб. 2011  


Помог: 0 раз(а)




Разобрался сам. Спасибо огромное за помощь!
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB