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

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

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

 

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

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

тема: Регулярка и вычисление...
 
 автор: PROUser   (21.07.2008 в 14:32)   письмо автору
 
 

Странное название темы, но всё же стал вопрос...Смысл: пытаюсь написать граббер. Грабим страничку, в которой есть товары и цены. Задача: увеличить цену на определённое число. Итак, имеем ячейки таблицы вида:
________________________

<td class="price incaritem">
440 000 <span class="ages">Руб.</span>
________________________


Видим, что цена товара 440 000 пишем регулярное выражение, что бы выдернуть цену:

$RetrieveFile = preg_replace('#<td class="price incaritem">(.+)<span class="ages">(.+)</span>#isU', '<td>$1</td>',$RetrieveFile);


Теперь получается что $1 имеет значение цены и равно 440 000. Как мне правильно преобразовать текстовый тип в числовой, а патом прибавить туда число и вывести на дисплей. Т.е. что то типа:

<?
      
$= (int)$1// преобразуем в int
      
$= $1000;   //добавляем накрутку
?>


Как это правильно организовать в регульярном выражении?

   
 
 автор: PROUser   (22.07.2008 в 09:50)   письмо автору
 
   для: PROUser   (21.07.2008 в 14:32)
 

Ну есть какае-нибудь решения, либо мануалы, каким образом мне вести преобразование/вычисление в регулярном выражении?

   
 
 автор: cheops   (22.07.2008 в 11:29)   письмо автору
 
   для: PROUser   (21.07.2008 в 14:32)
 

Можно поступить следующим образом
<?php
  $RetrieveFile 
'<td class="price incaritem">
                   440 000 <span class="ages">Руб.</span>'
;

  
$pattern '#<td class="price incaritem">(.+)<span class="ages">(.+)</span>#iseU';
  
$replacement "'<td>'.(str_replace(' ', '', '$1') + 1000).'</td>'";

  
$RetrieveFile preg_replace($pattern
                               
$replacement
                               
$RetrieveFile);
  echo 
$RetrieveFile;
?>

   
 
 автор: PROUser   (22.07.2008 в 13:05)   письмо автору
 
   для: cheops   (22.07.2008 в 11:29)
 

Отлично! Большое Спасибо!.
Уже незнал что делать. Ну о том что нужно убить пробелы я догадался. Теперь вродебы понял, сначала нужно было задать шаблон. Патом если нашлось соостветствие по шаблону производить вычисление. Ещё раз спасибо.

   
Rambler's Top100
вверх

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