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

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

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

 

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

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

тема: курс валют
 
 автор: sl1p   (28.11.2008 в 08:27)   письмо автору
 
 

мб баян, но жопу себе уже разорвал никак ничего не могу сделать :\

$string = '
<tr>
<td bgcolor="#FFFFFF"><b>BYR</b></td>
<td nowrap bgcolor="#FFFFFF">бiлоруський рубль</td>
<td align="center" bgcolor="#FFFFFF">0,0019</td>
<td align="center" bgcolor="#FFFFFF">0,0033</td>
<td align="center" bgcolor="#FFFFFF">0,0031</td>

</tr>

<!-- row -->
<tr>
<td bgcolor="#FFFFFF"><b>USD</b></td>
<td nowrap bgcolor="#FFFFFF">долар США</td>
<td align="center" bgcolor="#FFFFFF">6,8089</td>
<td align="center" bgcolor="#FFFFFF">6,8494</td>

<td align="center" bgcolor="#FFFFFF">6,7418</td>
</tr>

<!-- row -->
<tr>
<td bgcolor="#FFFFFF"><b>RUB</b></td>
<td nowrap bgcolor="#FFFFFF">росiйський рубль</td>
<td align="center" bgcolor="#FFFFFF">0,2364</td>

<td align="center" bgcolor="#FFFFFF">0,2420</td>
<td align="center" bgcolor="#FFFFFF">0,2459</td>
</tr>

<!-- row -->
<tr>
<td bgcolor="#FFFFFF"><b>EUR</b></td>
<td nowrap bgcolor="#FFFFFF">ЄВРО</td>

<td align="center" bgcolor="#FFFFFF">8,7869</td>
<td align="center" bgcolor="#FFFFFF">8,8554</td>
<td align="center" bgcolor="#FFFFFF">8,6969</td>
</tr>
';

нужно дёрнуть в массив 2 выделенных значения..
буду премного благодарен(:

  Ответить  
 
 автор: ddhvvn   (28.11.2008 в 10:45)   письмо автору
 
   для: sl1p   (28.11.2008 в 08:27)
 

не надо себе жопу рвать =)

  Ответить  
 
 автор: cheops   (28.11.2008 в 12:21)   письмо автору
 
   для: sl1p   (28.11.2008 в 08:27)
 

А вы откуда информацию извлекаете? Обычно центробанки стран предоставляют такую информацию в XML-формате - его попроще разбирать, чем разверстанную страницу, дизайн которой может измениться. Или вам именно эти курсы с этой страницы нужны?

  Ответить  
 
 автор: sl1p   (28.11.2008 в 12:46)   письмо автору
 
   для: cheops   (28.11.2008 в 12:21)
 

дело в том что мне нужен НБУ :(
поэтому вижу выход только перебирать первый пост..

  Ответить  
 
 автор: sl1p   (28.11.2008 в 12:54)   письмо автору
 
   для: sl1p   (28.11.2008 в 12:46)
 

хотя нет, вот нашёл xml\rss нбу
http://bank-ua.com/export/currrate.xml

как бы оттуда потянуть?)

  Ответить  
 
 автор: AcidTrash   (29.11.2008 в 00:26)   письмо автору
 
   для: sl1p   (28.11.2008 в 12:54)
 

<pre>
<?php
$t
=file_get_contents("http://bank-ua.com/export/currrate.xml");
preg_match_all("#<rate>.+?</rate>#s",$t,$out);
print_r($out);
?>

А уж там вытяните из массива, что надо. :)

  Ответить  
 
 автор: sl1p   (29.11.2008 в 04:14)   письмо автору
 
   для: AcidTrash   (29.11.2008 в 00:26)
 

и как мне оттуда тянуть ?:)

можно составить рег чтобы на выходе получил так, например:

$out[0] = 434 // <code>434</code>
$out[1] = 353 // <rate>353</rate>
$out[2] = 100 // <size>100</size> // чтобы поделить этим калом rate и получить нормальный курс :)

?:)

  Ответить  
 
 автор: xx77   (29.11.2008 в 13:26)   письмо автору
 
   для: sl1p   (29.11.2008 в 04:14)
 

тут на вкус и цвет наверное можно по всякому наделать ,)
например как-то так получать значения в массив
<pre><?
$txt 
file_get_contents('...........xml');

$reg='#<item>.+?
<code>([^<]+).+?
<char3>([^<]+).+?
<size>([^<]+).+?
<name>([^<]+).+?
<rate>([^<]+).+?
<change>([^<]+)#sx'
;

preg_match_all($reg$txt$out2);
print_r($out);
?>

можно без /x одной строкой,
а можно сразу делать нужные вычисления функцией, юзая preg_replace_callback()

  Ответить  
 
 автор: ddhvvn   (29.11.2008 в 14:04)   письмо автору
 
   для: xx77   (29.11.2008 в 13:26)
 

ко многим:
мне кажется несколько извращенским из XMLа выдергивать данные регуляркой )

  Ответить  
 
 автор: sl1p   (29.11.2008 в 22:27)   письмо автору
 
   для: ddhvvn   (29.11.2008 в 14:04)
 

предложите свой вариант:))

  Ответить  
 
 автор: sl1p   (30.11.2008 в 02:18)   письмо автору
 
   для: xx77   (29.11.2008 в 13:26)
 

спасибки огромное, оно:)
зы. а можно както подправить немного чтобы выходил сразу массив из значений без вот такой строки:

Array
(
    [0] => <code>840</code>
<char3>USD</char3>
<size>100</size>
<name>доларів США</name>
<rate>687.7700

    [1] => 840
    [2] => 100
    [3] => 687.7700
)
?

  Ответить  
 
 автор: xx77   (30.11.2008 в 20:01)   письмо автору
 
   для: sl1p   (30.11.2008 в 02:18)
 

Мне так кажется что только юзая preg_replace_callback(),
который будет небудет заменять найденноё всёравно на что, на пустую строку ,
но в callback - функции будут записываться данные во внешний массив
, например объявленный там как global $array;

или проводить операции с массивом из preg_match_all() , удалив ненужные елементы .

к сожалению в php не вижу возможности просто отдельно обрабатывать каждое следующее совпадение в цикле,
как например в perl или javascript
только preg_replace, preg_replace_callback
, а не включить в результаты предшевствующего, найденного подмаской (?<=....)
можно только с фиксированной длинной его.
невключить последующее как (?=.....) попроще

  Ответить  
 
 автор: AcidTrash   (30.11.2008 в 20:06)   письмо автору
 
   для: sl1p   (29.11.2008 в 04:14)
 

Хм, я по вашему вопросу ответил понятно, но если вы элементарно не можете работать с массивами, то уж извените...

  Ответить  
 
 автор: sl1p   (04.12.2008 в 13:07)   письмо автору
 
   для: AcidTrash   (30.11.2008 в 20:06)
 

Зачем сорить лишним калом в массиве когда это можно сделать в выражении?
В пхп очень многое можно сделать по другому, но всё таки лучше сделать-то оптимизировано?

  Ответить  
 
 автор: ddhvvn   (04.12.2008 в 16:42)   письмо автору
 
   для: sl1p   (04.12.2008 в 13:07)
 

>Зачем сорить лишним калом в массиве когда это можно сделать в выражении?

Это Вы про это?
Array 

    [0] => <code>840</code> 
<char3>USD</char3> 
<size>100</size> 
<name>доларів США</name> 
<rate>687.7700 
    [1] => 840 
    [2] => 100 
    [3] => 687.7700 
)


Если да то сделайте "оптимизированней" и покажите нам!
или лучше выучите рег.выражения, хотя бы фукнцию preg_match, а потом предъявы кидайте.

  Ответить  
 
 автор: sl1p   (04.12.2008 в 17:22)   письмо автору
 
   для: ddhvvn   (04.12.2008 в 16:42)
 

Я потому и говорю, если укоротили уже как можно, тогда окей - вопросов нет.
А дёрнуть практически всю страницу и просто распихать её по массивам и уже оттуда чтото брать имхо не то.
зы. предъяв никто не кидал, научитесь читать.

  Ответить  
 
 автор: AcidTrash   (04.12.2008 в 21:18)   письмо автору
 
   для: sl1p   (04.12.2008 в 17:22)
 

А куда уж более оптимизировано то?
>А дёрнуть практически всю страницу
А что, этот xml много весит? :)
>и просто распихать её по массивам и уже оттуда чтото брать имхо не то
По каким массивам? Массив один.
А как вы дальше хотите использовать, я понятия не имею.

  Ответить  
 
 автор: sl1p   (04.12.2008 в 22:03)   письмо автору
 
   для: AcidTrash   (04.12.2008 в 21:18)
 

Какая разница сколько он весит?
Зачем раздувать из этого кучу чего-то. Вопрос же не в этом совсем:)
По каким массивам? Массив один.
не надо придераться к словам (:.

Меня то не затрудняет выдерать из массива, просто хотелось бы чтобы код был как можно чище я думаю вы меня поймёте(: всегда приятно знать что твой код максимально ровный:)

А куда уж более оптимизировано то?
Раз это максимум, то я написал что вопросов нет и спорить не буду так как действительно регулярных выражений не знаю.
Это уже тут некоторые начинают предъявлять мне что я кому-то что-то тыкаю (:

  Ответить  
 
 автор: AcidTrash   (04.12.2008 в 22:40)   письмо автору
 
   для: sl1p   (04.12.2008 в 22:03)
 

>я думаю вы меня поймёте(: всегда приятно знать что твой код максимально ровный:)
Ну уж в данном случае, он идеально ровный. А из массива нужные rate выбрать раз плюнуть.

  Ответить  
 
 автор: sl1p   (04.12.2008 в 23:02)   письмо автору
 
   для: AcidTrash   (04.12.2008 в 22:40)
 

ну уже да:)
и давно из этого написал то что надо было.
вобщем глупый флуд мы тут поразводили.
Ещё раз спасибо(:

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

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