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

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

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Извлечь информации из HTML-файла при помощи регулярных выражений

Сообщения:  [1-10]    [11-20]  [21-21] 

 
 автор: ExtreMall   (11.01.2007 в 03:35)   письмо автору
 
   для: Trianon   (10.01.2007 в 23:54)
 

Спасибо, совсем уже ослеп :-)
Все работает, спасибо ВСЕМ!!

   
 
 автор: Trianon   (10.01.2007 в 23:54)   письмо автору
 
   для: ExtreMall   (10.01.2007 в 23:25)
 

Что значит пробел в первой строке?


<? php 

   
 
 автор: ExtreMall   (10.01.2007 в 23:25)   письмо автору
 
   для: Trianon   (10.01.2007 в 20:41)
 

Trianon, этого я и добиваюсь, спасибо Вам
я сделал так, но почему то ничего не появляется совсем!!


<? php
$x 
'<table cellspacing="1" cellpadding="2" border="0" style="font-size:10px; font-family:Tahoma, Arial, Helvetica, sans-serif;"> 
   <tr bgcolor="#657FAB" style="color:#FFFFFF; font-size:10px; font-weight:bold; font-family:Tahoma, Arial, Helvetica, sans-serif;"> 
      <td colspan="2" align="center">Symbol</td> 
      <td align="center">Bid</td> 
      <td align="center">Ask</td> 
   </tr> 
   <tr bgcolor="#EAEBEE" class="text"> 
      <td><img src="img/down.gif" width="12" height="12"></div></td> 
      <td width="50"><div class="down">EURUSD</td> 
      <td width="40" align="right"><div class="down">1.2961</div></td> 
      <td width="40" align="right"><div class="down">1.2963</div></td> 
   </tr> 
   <tr class="text"> 
      <td><img src="img/down.gif" width="12" height="12"></div></td> 
      <td width="50"><div class="down">USDCHF</td> 
      <td width="40" align="right"><div class="down">1.2448</div></td> 
      <td width="40" align="right"><div class="down">1.2452</div></td> 
   </tr></td></table> '

$ptn '#<div[^>]*>([A-Z]+)[^=]+=[^<]+<div[^>]*>([.0-9]+)[^=]+=[^<]+<div[^>]*>([.0-9]+)#s'
$res preg_match_all($ptn$x$outPREG_SET_ORDER); 
foreach(
$out as $key => $val) unset($out[$key][0]); 
echo 
'<pre>'
print_r($out); 
?>


Где ошибка?

   
 
 автор: Trianon   (10.01.2007 в 20:41)   письмо автору
 
   для: kasmanaft   (10.01.2007 в 20:22)
 


$ptn = '#<div[^>]*>([A-Z]+)[^=]+=[^<]+<div[^>]*>([.0-9]+)[^=]+=[^<]+<div[^>]*>([.0-9]+)#s';

$res = preg_match_all($ptn, $x, $out, PREG_SET_ORDER);

foreach($out as $key => $val) unset($out[$key][0]);
echo '<pre>';
print_r($out);



Array
(
    [0] => Array
        (
            [1] => EURUSD
            [2] => 1.2961
            [3] => 1.2963
        )

    [1] => Array
        (
            [1] => USDCHF
            [2] => 1.2448
            [3] => 1.2452
        )

)

   
 
 автор: kasmanaft   (10.01.2007 в 20:22)   письмо автору
 
   для: ExtreMall   (10.01.2007 в 19:28)
 

Можно наверное таким выражением обработать текст и потом уже работать с массивом:

#<div[^>]*>([^<]+)#s

Получим массив

Array
(
    [1] => Array
        (
            [0] => EURUSD
            [1] => 1.2994
            [2] => 1.2996
            [3] => USDCHF
            [4] => 1.2419
            [5] => 1.2423
            [6] => USDJPY
            [7] => 119.18
            [8] => 119.21
            [9] => GBPUSD
            [10] => 1.9384
            [11] => 1.9388
        )
)

Или же можно разбить текст на 4 куска и обрабатывать их по отдельности в цикле ... Но этот вариант по-моему лучше.

   
 
 автор: ExtreMall   (10.01.2007 в 19:28)   письмо автору
 
   для: ExtreMall   (10.01.2007 в 18:10)
 

Ну помогите кто нибудь а

   
 
 автор: ExtreMall   (10.01.2007 в 18:47)   письмо автору
 
   для: Гость   (10.01.2007 в 18:36)
 

Гость если не сложно то пожалуйста напишите, я подожду.

   
 
 автор: Гость   (10.01.2007 в 18:36)   письмо автору
 
   для: ExtreMall   (10.01.2007 в 18:10)
 

да, я просто не так понял :). вообщем выражение должно выглядеть как-то так:
"/.*(<div class=\"down\">){1}(.*)(<\/div>){1}.*/i"
это для первого.. видимо его надо просто надставить раз 7-мь (по кол-ву значений) но это некрасиво :).или ..
О можно еще так :
ищем это значение, получаем, зачем с помошью рег. выражения затираем это место, и в цикл это :), ужасть, если что могу написатЬ, но завтра :), а я думаю до этого момента придложат более элегантное решение :)

   
 
 автор: ExtreMall   (10.01.2007 в 18:10)   письмо автору
 
   для: Гость   (10.01.2007 в 17:55)
 

Да большое спасибо, но наверное вы меня не так поняли, вернее я не так вопрос поставил сразу :-(

Вообщем так, мне нужно выдернуть отсюда два числа (тут это: 1.2961 и 1.2963),
==============================================================
<td width="50"><div class="down">EURUSD</td> |
<td width="40" align="right"><div class="down">1.2961</div></td> |
<td width="40" align="right"><div class="down">1.2963</div></td> |
==============================================================
заведомо неизвестных, но так чтобы они в соотвествии с символом находились в таких переменных: $EURUSD_1 и $EURUSD_2, т.е.: $EURUSD_1=1.2961, а $EURUSD_2=1.2963
и так далее со всеми символами (я просто сократил табличку), дальше идет USDCHF, с ним нужно проделать тоже самое USDCHF_1=1.2448, а USDCHF_2=1.2452, но это я уже сам сделал бы, мне бы только с первым разобратся, а дальше надеюсь пойму.

<table cellspacing="1" cellpadding="2" border="0" style="font-size:10px; font-family:Tahoma, Arial, Helvetica, sans-serif;">
   <tr bgcolor="#657FAB" style="color:#FFFFFF; font-size:10px; font-weight:bold; font-family:Tahoma, Arial, Helvetica, sans-serif;">
      <td colspan="2" align="center">Symbol</td>
      <td align="center">Bid</td>
      <td align="center">Ask</td>
   </tr>
   <tr bgcolor="#EAEBEE" class="text">
      <td><img src="img/down.gif" width="12" height="12"></div></td>
      <td width="50"><div class="down">EURUSD</td>
      <td width="40" align="right"><div class="down">1.2961</div></td>
      <td width="40" align="right"><div class="down">1.2963</div></td>
   </tr>
   <tr class="text">
      <td><img src="img/down.gif" width="12" height="12"></div></td>
      <td width="50"><div class="down">USDCHF</td>
      <td width="40" align="right"><div class="down">1.2448</div></td>
      <td width="40" align="right"><div class="down">1.2452</div></td>
   </tr></td></table>

   
 
 автор: Гость   (10.01.2007 в 17:55)   письмо автору
 
   для: ExtreMall   (10.01.2007 в 17:46)
 

.

   

Сообщения:  [1-10]    [11-20]  [21-21] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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