Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Грабер прайс-листа с перерасчётом
 
 автор: vo3   (07.03.2006 в 19:30)
 
 

Как сграбить прайс лист с сайта http://mopaz.ru/. С пересчётом рублей в грн. (цену умножить на 0.219)

   
 
 автор: cheops   (08.03.2006 в 13:21)   письмо автору
 
   для: vo3   (07.03.2006 в 19:30)
 

Там вообще не хилое число страниц, укажите на примере какой страницы необходимо провести преобразование... может просто ссылку дать на сайт?

   
 
 автор: vo3   (09.03.2006 в 20:55)
 
   для: cheops   (08.03.2006 в 13:21)
 

Вот адрес прайса
http://mopaz.ru/price_new_look.php?mcid=3

   
 
 автор: vo3   (09.03.2006 в 21:13)
 
   для: vo3   (09.03.2006 в 20:55)
 

http://mopaz.ru/price_new_look.php?mcid=4

   
 
 автор: @ndry   (10.03.2006 в 12:11)   письмо автору
 
   для: vo3   (09.03.2006 в 21:13)
 

Помогите плиз, очень надо!!!

   
 
 автор: cheops   (11.03.2006 в 12:40)   письмо автору
 
   для: vo3   (09.03.2006 в 21:13)
 

Давайте пока начнём с такого скрипта, он в два захода извлекает в массивы содержимое страниц
<?php 
  $str 
file_get_contents("http://mopaz.ru/price_new_look.php?mcid=4"); 
  
$pattern "|<tr>[\s]*<td[^>]*>([^<]+)</td>[\s]*<td[^>]*>([^<]+)</td>[\s]*<td[^>]*>([^<]+)</td>[\s]*</tr>|isU"
  
preg_match_all($pattern$str$out); 
  unset(
$out[0]);
  echo 
"<pre>";
  
print_r($out); 
  echo 
"</pre>";
  
$pattern "|<tr>[\s]*<td[^>]*>[\s]*<a[^>]*>([^<]+)</a>[\s]*</td>[\s]*<td[^>]*>([^<]+)</td>[\s]*<td[^>]*>([^<]+)</td>[\s]*</tr>|isU"
  
preg_match_all($pattern$str$out); 
  unset(
$out[0]);
  echo 
"<pre>";
  
print_r($out); 
  echo 
"</pre>";
?>

   
 
 автор: @ndry   (14.03.2006 в 16:22)   письмо автору
 
   для: cheops   (11.03.2006 в 12:40)
 

А как теперь пересчитатть рубли в грн?

   
 
 автор: @ndry   (28.03.2006 в 01:29)   письмо автору
 
   для: @ndry   (14.03.2006 в 16:22)
 

Вот что у меня получилось:

<?php
$str 
file_get_contents("http://mopaz.ru/price_new_look.php?mcid=3"); 
$pattern "|<tr>[\s]*<td[^>]*>[\s]*(<a[^>]*>[\S++]*[^<]+</a>[\s]*)</td>[\s]*<td[^>]*>([^<]+)</td>[\s]*<td[^>]*>([^<]+)</td>[\s]*</tr>|isU"
preg_match_all($pattern$str$out); 
unset(
$out[0]); 

?>
<table width="100%" border="0" cellspacing="0" cellpadding="2" style="border:1px solid #FFFFFF;">
  <tr>
    <th scope="col" style="font-size:12px;" colspan="2">Наименование</th>
    <th scope="col" style="font-size:12px;">Цена</th>
  </tr>
<?php
for($i=0$i sizeof($out[1]); $i++)
{
////////////////////// Поиск......
if($_POST['highlight'])
{
    
$out[1][$i] = str_replace($_POST['highlight'], "<b><font color=green>".$_POST['highlight']."</font></b>"$out[1][$i]);
    
$out[2][$i] = str_replace($_POST['highlight'], "<font color=green>".$_POST['highlight']."</font>"$out[2][$i]);
}

/////////////// Конец поиска
    
$out[3][$i] = str_replace(" """rtrim(ltrim(trim($out[3][$i]))));
    
$out[3][$i] = str_replace("&nbsp;руб."""$out[3][$i]);



    
$chena trim($out[3][$i])*0.2202;
    
$chena sprintf("%01.0f"$chena); 
    if(
$chena == 0$chena "н.д.";
    else  
$chena $chena."&nbsp;грн.";
?>

<!-- row <?php echo $i?> -->
  <tr style="border:1px solid #FFFFFF;">
    <td style="font-size:12px;"><?php echo $out[1][$i]; ?></td>
    <td align="center" style="font-size:12px;"><?php echo $out[2][$i]; ?></td>
    <td align="center" style="font-size:12px;"><?php echo $chena?></td>
  </tr>
<?php
}
?>


</table>


Вот что у меня не получается:
1. Поиск идёт с учётом регистра, как сделать чтоб оно без учёта регистра?
2. По ссылке на прайс(смотрите выше) есть категории, как их сохранить в моём прайсе?
3. Товары без цен не выводятся, почему?

   
 
 автор: @ndry   (04.04.2006 в 14:30)   письмо автору
 
   для: @ndry   (28.03.2006 в 01:29)
 

Помогите пожалуйста, очень нужно!!!!!!!
Зарание благодарен за любую помощь

   
 
 автор: cheops   (06.04.2006 в 00:00)   письмо автору
 
   для: @ndry   (28.03.2006 в 01:29)
 

1) Странно не должен бы... вроде стоит модификатор i, хотя если дело в str_replace() - это вполне может быть, эта функция зависит от регистра.

   
 
 автор: @ndry   (06.04.2006 в 11:03)   письмо автору
 
   для: cheops   (06.04.2006 в 00:00)
 

А как это всё поисправлять?

   
 
 автор: Trianon   (06.04.2006 в 11:08)   письмо автору
 
   для: @ndry   (06.04.2006 в 11:03)
 

str_ireplace от регистра не зависит.

   
 
 автор: @ndry   (07.04.2006 в 16:36)   письмо автору
 
   для: Trianon   (06.04.2006 в 11:08)
 

Спасибо, но помогите хоть кто-небудь с остальным

   
 
 автор: @ndry   (12.04.2006 в 12:04)   письмо автору
 
   для: @ndry   (07.04.2006 в 16:36)
 

---

   
 
 автор: cheops   (12.04.2006 в 14:05)   письмо автору
 
   для: @ndry   (28.03.2006 в 01:29)
 

>2. По ссылке на прайс(смотрите выше) есть категории, как их сохранить в моём прайсе?
Нужно писать что-то вроде мини-робота, который будет обходить категории сайта - они часто меняются - может их просто жёстко забить в код?

>3. Товары без цен не выводятся, почему?
Для этого придётся создать новое регулярное выражение, которое будет учитывать товары без цен и обрабатывать данные в два захода (для тех у кого имеются цены и у кого их нет).

   
 
 автор: @ndry   (12.04.2006 в 15:29)   письмо автору
 
   для: cheops   (12.04.2006 в 14:05)
 

Категории ві неправильно поняли:

<tr>
<td align="left" class="tablecell"> <a href="javascript: OpenWindow('pr_preview.php?pid=966&cid=12&mcid=3','518','555','0','0');" class="menulink1">Стенд для демонтажа, монтажа шин л/а на дисках от 12 до26"</a> </td>
<td align="center" nowrap class="tablecell">С-601</td>
                      <td align="center" nowrap class="tablecell">37 200&nbsp;руб.</td>
</tr>        
<!-- прерывается прайс --> 
<!-- ЭТО КАТЕГОРИИ --> 
<tr>
<td class="tablehead" colspan="3"><a name="13">Компрессорное оборудование</a></td>
</tr> 
<!-- конец ЭТО КАТЕГОРИИ -->
<!-- прайс следует далее -->  
<tr>
<td align="left" class="tablecell"> <a href="javascript: OpenWindow('pr_preview.php?pid=93&cid=13&mcid=3','518','555','0','0');" class="menulink1">Компрессор стационарный (1000л/мин, 500л, 10атм, 380 В)</a> </td>
<td align="center" nowrap class="tablecell">С-416 М</td>
                      <td align="center" nowrap class="tablecell">43500&nbsp;руб.</td>
</tr>



Можно написать одно рег. выражение, которое сделает сразу 2 и 3?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования