Вытащить цену из текста

Статус
В этой теме нельзя размещать новые ответы.

smertnik

Постоялец
Регистрация
5 Июн 2006
Сообщения
68
Реакции
30
Здравствуйте.

Помогите с регулярным выражением для следующего текста:
Код:
Начальная (максимальная) цена контракта (лота):1. приобретение оргтехники для районных (городских) судов Чеченской Республики.    468000.00 руб.
<td>Способ размещения заказа: Запрос котировокГод финансирования: 2008Организатор торгов:Наименование: Управление Судебного депратамента при Верховном Суде Российской Федерации  в Чеченской РеспубликеКонтактная информация:Телефон: (8712) 22 46 93,(8712) 22 34 99,(8712) 22-46-93,(8712) 22-34-99,Контактное лицо: Мачаев Хумид ВиситовичИсточник финансирования: Федеральный бюджетСведения о включенных (невключенных) в цену товаров, работ, услуг расходах, в том числе расходах на перевозку, страхование, уплату таможенных пошлин, налогов, сборов и других обязательных платежей: приобретение оргтехники для районных (городских) судов Чеченской Республики.Место и вид подачи котировочных заявок: Российская Федерация, 364016, Грозный, Алексеева, 160Дата и время окончания срока подачи котировочных заявок (время местное): 25.08.2008 0:00:00Cрок и условия оплаты поставок товаров, выполнения работ, оказания услуг: Безналичный расчет, не позднее 10 рабочих дней с момента подписания акта сдачи-приемки выполненных работ.Cрок подписания победителем государственного контракта со дня подписания протокола рассмотрения и оценки котировочных заявок: не позднее 10 дней со дня подписания протокола рассмотрения и оценки котировочных заявокЗаказчик: Управление Судебного депратамента при Верховном Суде Российской Федерации  в Чеченской РеспубликеАдрес заказчика: Российская Федерация, 364016, Грозный, Алексеева, 160Контактные реквизиты заказчика: (8712) 22-46-92, (8712) 22-34-99Адрес электронной почты: usd_01@mail.ruКонтактная информация:Телефон: (8712) 22 46 93,(8712) 22 34 99,(8712) 22-46-93,(8712) 22-34-99,Контактное лицо: Нагаев Бислан Харонович (8712) 22-46-93Иная информация: Дополнительная информация находится в приложенном файле</td>

Из него нужно вытащить цену - (468000.00) руб. Но перед ценой может быть какой угодно текс, привязаться не выйдет, искать как цифры не выходит, т.к в тексте телефоны и.т.д встречаются. Единственное что после цены идет тип валюты (.руб)
 
Попробуй так
/\s(\d+)\.(\d+)\sруб/
 
Сори, что влез... топы пока не могу создавать.
Нужна помощь...
есть ячейка, где надо накрутить сумму (333)

<td class="price incaritem"> 333 <span class="ages">USD.</span></td>

делаю так
Код:
<script language="JavaScript">
  $RetrieveFile = '<td class="price incaritem">
                   333 <span class="ages">USD.</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;
</script>
не хочет менять... Что сделано не так?
Корректно ли составлен скрипт?
 
Это у тебя вообще что такое? Если ПХП тогда почему
language="JavaScript"
 
Вытащил код откуда-то... php конечно же...
И ввиду "особой одаренности", решил, что если обозвать это дело language="JavaScript" , то оно так и поплывет.

Буду очень благодарен, если кто поправит/напишет скрипт под задачу...
( а задача, на сграбленной странице прайсов, накручивать определенную в скрипте сумму к ценам)
 
Кажется понял, небходимо добавить USD, так? Вот исправленный код:
PHP:
<script language="php">
  $RetrieveFile = '<td class="price incaritem">
                   333 <span class="ages">USD.</span>';
  $pattern = '#<td class="price incaritem">(.+)<span class="ages">(.+)</span>#iseU';
  $replacement = "'<td>'.($1+1000).'<span class=\"ages\">$2</span>'";
  $RetrieveFile = preg_replace($pattern, 
                               $replacement, 
                               $RetrieveFile);
  echo $RetrieveFile;
</script>
У тебя в строке '$replacement =' две ошибки во первых $2 нету, соответственно USD не скопируется, во вторых <td> добавлен, хотя регулярка его не захватывает. Кроме того, str_replace там нафиг не нужен, хотя правильность результата не портит.
 
спасибо, RolCom.
Подставил код ... но почему-то не хочет менять :( попрежнему.

Вроде все с виду должно работать.. но выводит в броузере те же 333
Код:
<html>
<body>
<td class="price incaritem"> 333 <span class="ages">USD.</span></td>

<script language="php">
  $RetrieveFile = '<td class="price incaritem">
                   333 <span class="ages">USD.</span>';
  $pattern = '#<td class="price incaritem">(.+)<span class="ages">(.+)</span>#iseU';
  $replacement = "'<td>'.($1+1000).'<span class=\"ages\">$2</span>'";
  $RetrieveFile = preg_replace($pattern, 
                               $replacement, 
                               $RetrieveFile);
  echo $RetrieveFile;
</script>  
</body>
</html>
 
Естественно, в преведенном выше коде он сначала выводит
Код:
<td class="price incaritem"> 333 <span class="ages">USD.</span></td>
А после него нужный результат.
ПХП скрипт обрабатывает только то, что в строке:
Код:
 $RetrieveFile = '<td class="price incaritem">
333 <span class="ages">USD.</span>';

З.Ы. и регулярка неверная, ток щас заметил, короче правильный вариант:
PHP:
<script language="php">
  $RetrieveFile = <<<EOF
<td class="price incaritem"> 333 <span class="ages">USD.</span></td>
<td class="price incaritem"> 22 <span class="ages">EUR.</span></td>
<td class="price incaritem"> 44 <span class="ages">EUR.</span></td>
EOF;
  $pattern = '#<td class="price incaritem">(.+?)<span class="ages">(.+?)</span>#ise';
  $replacement = "'<td>'.($1+1000).' <span class=\"ages\">$2</span>'";
  $RetrieveFile = preg_replace($pattern, 
                               $replacement, 
                               $RetrieveFile);			   
  echo $RetrieveFile;
</script>
 
Благодарю, RolCom.
Снова нужна помощь.
на странице имеются следующие строки:
Код:
<div class="RowNoLink">
<span class="RowText">
			ID item 40-42-08 5177
			</span>
		</div>
		<br />
		<div class="RowNoLink">
			<span class="RowText">
			<strong> £ 43.95* B</strong>
			</span>
		</div>
<div class="RowNoLink">
<span class="RowText">
			ID item 40-42-08 5178
			</span>
		</div>
		<br />
		<div class="RowNoLink">
			<span class="RowText">
			<strong> £ 55.04* B</strong>
			</span>
		</div>
НЕобходимо вытащить цену только с определенного ID item в данном случае с ID item 40-42-08 5177
Как составить регулярку в этом случае?
(нужен глобальный, многострочный поиск? )
 
Код:
(?xi)
<div\s+class\s*=\s*"RowNoLink"\s*>\s*
<span\s+class\s*=\s*"RowText"\s*>\s*
    ID\s+item\s+ 40-42-08\s+5178
\s*</span>
\s*</div>
\s*<br\s+/>\s*

<div\s+class\s*=\s*"RowNoLink"\s*>\s*
<span\s+class\s*=\s*"RowText"\s*>\s*
   <strong>[^<\d]*(\d+(?:\.\d\d)?)[^<]*</strong>
\s*</span>
\s*</div>
Вместо '40-42-08' и '5178' подставить свое значение.
Между <strong> и </strong> регулярка ищет совпадения с чилом формата напр. XXXXX или XXXX.XX(первые X-ы в любом количестве>0), вокруг числа могут быть произвольные символы.
Теги <strong>, </strong>, </span>, </div> как видишь, ищутся как есть, с точным совпадением.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху