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

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

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

 

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

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

тема: Извлечь процент из HTML-кода
 
 автор: SIDPR   (01.04.2009 в 16:01)   письмо автору
 
 

 <tr><td valign="top" width="211">
          <p><b>тест</b></p>
        </td><td valign="top" width="86">
          <p></p>
        </td><td valign="top" width="86">
          <p></p>
        </td><td valign="top" width="86">
          <p><b>-42,2% </b></p>
        </td><td valign="top" width="86">
          <p></p>
        </td></tr>



есть подобные куски кода. из известного есть только слово тест к примеру. необходимо както извлечь "-42,2".

  Ответить  
 
 автор: Андрюха.   (27.04.2009 в 06:42)   письмо автору
 
   для: SIDPR   (01.04.2009 в 16:01)
 

#<b>.+?([^<]+)#s

  Ответить  
 
 автор: sidPR   (29.04.2009 в 10:54)   письмо автору
 
   для: Андрюха.   (27.04.2009 в 06:42)
 

Может быть еще такойже блок но с другим словом, нужно както слово учитывать и в соответствии с тем если оно есть выдерать процент из ячейки

  Ответить  
 
 автор: sidPR   (05.05.2009 в 16:08)   письмо автору
 
   для: sidPR   (29.04.2009 в 10:54)
 

Ячеек очень много но мне надо опиратся на текст который выше

к примеру:
 <tr><td valign="bottom" nowrap="true" width="201">
          <p><strong>стоимость акций</strong></p>
        </td><td valign="bottom" nowrap="true" width="83">
          <p> </p>
        </td><td valign="bottom" nowrap="true" width="83">
          <p> </p>
        </td><td valign="bottom" nowrap="true" width="83">
          <p align="right">270 656</p>
        </td><td valign="bottom" width="83">
          <p align="right">39,0%</p>
        </td></tr>


есть слово "стоимость акций" причем оно может быть в Жирным и Курсивым не важно главное что оно в <TD><TD> из известного у меня есть это слово "стоимость акций" а неизвестно у меня 4столбик <TD></TD> в примере это 39,0% опять также может быть в любом стиле и обрамлено любыми тегами.

  Ответить  
 
 автор: AcidTrash   (05.05.2009 в 20:12)   письмо автору
 
   для: sidPR   (05.05.2009 в 16:08)
 

Если уж вам нужен процент, включая минус, то думаю пойдет такое решение:
preg_match_all("#>[\d,-]+%#",$text,$out);

  Ответить  
 
 автор: sidPR   (06.05.2009 в 14:54)   письмо автору
 
   для: AcidTrash   (05.05.2009 в 20:12)
 

а где в регулярке указать "стоимость акций" .. т.к. <tr> много и разные .. надо четко привязыватся к словам.. помогите плиз

  Ответить  
 
 автор: Брыль   (06.05.2009 в 18:33)   письмо автору
 
   для: sidPR   (06.05.2009 в 14:54)
 

Если стоимость акций указывается со знаками + или -, то:
#^(\+|-)[\d]+(,[\d]{1,2})?%$#
шаблон также подходит и для целых и для дробных выражений

  Ответить  
 
 автор: sidPR   (13.05.2009 в 17:22)   письмо автору
 
   для: Брыль   (06.05.2009 в 18:33)
 

а где в регулярке указать "стоимость акций" ?

  Ответить  
 
 автор: AcidTrash   (13.05.2009 в 21:57)   письмо автору
 
   для: sidPR   (13.05.2009 в 17:22)
 

Взможно такое подойдет(на вашем примере)
<pre>
<?
$text
='<tr><td valign="bottom" nowrap="true" width="201">
          <p><strong>стоимость акций</strong></p>
        </td><td valign="bottom" nowrap="true" width="83">
          <p> </p>
        </td><td valign="bottom" nowrap="true" width="83">
          <p> </p>
        </td><td valign="bottom" nowrap="true" width="83">
          <p align="right">270 656</p>
        </td><td valign="bottom" width="83">
          <p align="right">39,0%</p>
        </td></tr>'
;

preg_match_all("#>(\d+\s\d+)<.*?>([\d,-]+%)#s",$text,$out);
unset(
$out[0]);
print_r($out);
?>

  Ответить  
 
 автор: sidPR   (14.05.2009 в 16:25)   письмо автору
 
   для: AcidTrash   (13.05.2009 в 21:57)
 

а если я хочу привязыватся к слову "стоимость акций" т.к. есть еще пару ячеек в которых есть нужные мне цифр но заголовок там другой .
я должен вместо этого
"(\d+\s\d+)" вставить - "стоимость акций" ?

  Ответить  
 
 автор: AcidTrash   (14.05.2009 в 22:08)   письмо автору
 
   для: sidPR   (14.05.2009 в 16:25)
 

Я уже толком не понимаю, что вы хотите(пример скудный), но может быть теперь так :)
preg_match_all("#.*?<strong>(стоимость акций)</strong>.*?>(\d+\s\d+)<.*?>([\d,-]+%)#s",$text,$out);  


P.S. РВ - это шаманство.:)

  Ответить  
 
 автор: sidPR   (20.05.2009 в 14:44)   письмо автору
 
   для: AcidTrash   (14.05.2009 в 22:08)
 

Спасибо большое! вроде работает :)

Но вот

<tr><td valign="bottom" nowrap="true" width="201">
        <p><strong>прирост стоимости портфеля</strong></p>
      </td><td valign="bottom" nowrap="true" width="83">
        <p> </p>
      </td><td valign="bottom" nowrap="true" width="83">
        <p> </p>
      </td><td valign="bottom" nowrap="true" width="83">
        <p align="center"><strong>43,9%</strong></p>
      </td><td valign="bottom" nowrap="true" width="83">
        <p> </p>
      </td></tr>


preg_match_all("#.*?<strong>(прирост стоимости портфеля)</strong>.*?>(\d+\s\d+)<.*?>([\d,-]+%)#s",$text,$out);

он ненаходит ничего :(

  Ответить  
Rambler's Top100
вверх

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