[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: регулярные выражения
vik1249
подскажите пожалуйста я хочу собрать цены курсов валют из банка http://www.alfabank.ru/ с помощью регулярных выражений, есть проблема у них цена округляется и нули убираются из за чего я получаю вместе с ценой еще символ


[^E]EUR[^E]*EURcashBy\"[^\d]*(\d{2}[^*]\d{0,2})[^E]*EUR[^E]*EURcashSell\"[^\d]*(\d{2}[^*]\d{0,2})



результат 28.7 29.7 41< 42.2

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




Спустя 4 часа, 23 минуты, 16 секунд (14.08.2011 - 00:33) qaz333 написал(а):
обьясни где там цены курсов валют, я ненашол, или лутше просто покажи кусок кода который хочеш спарсить

Спустя 20 минут, 53 секунды (14.08.2011 - 00:54) kirik написал(а):
vik1249
У них ведь есть отдельно курсы (_http://www.alfabank.ru/_/rss/_currency.html). Правда криво сделано, но оттуда парсить по-проще будет, мне кажется. Да и каждый раз будешь грузить на 50кб (главная страница), а 5кб (рсс).

Спустя 1 день, 15 часов, 59 минут, 55 секунд (15.08.2011 - 16:54) vik1249 написал(а):
Цитата (qaz333 @ 13.08.2011 - 21:33)
обьясни  где там цены курсов валют, я ненашол, или лутше просто покажи кусок кода который хочеш спарсить

<td style="text-align: left; vertical-align: middle;"></td></tr><tr><td class="currency">EUR</td><td style="text-align: left; width: 2em; padding-right: 0px;" id="EURcashBy">41</td><td style="text-align: left; vertical-align: middle;"></td><td style="text-align: left; width: 2em; padding-right: 0px;" id="EURcashSell">42,2</td>


вот значение сейчас 41 следовательно не срабатывает тк нет десятичной запитой и в итоге получается результа 41<

Спустя 2 минуты, 16 секунд (15.08.2011 - 16:56) neadekvat написал(а):
vik1249, а пост kirik'a ты успешно проигнорировал?

Спустя 2 минуты, 36 секунд (15.08.2011 - 16:59) vik1249 написал(а):
Цитата (neadekvat @ 15.08.2011 - 13:56)
vik1249, а пост kirik'a ты успешно проигнорировал?

вопрос был не в том откуда парсить а как сделать нормальное отображение если нет десятичной точки

Спустя 3 минуты, 29 секунд (15.08.2011 - 17:02) neadekvat написал(а):
Цитата (vik1249 @ 15.08.2011 - 17:59)
вопрос был не в том откуда парсить а как сделать нормальное отображение если нет десятичной точки

Ах, извините, Ваше Величество, что мы осмелились усомнится в целесообразности выбранного Вами пути и, о Боги, посмели предложить более рациональный вариант. Клятвенно клянусь за себя и за kirik'a впредь так не делать.

Спустя 11 минут, 11 секунд (15.08.2011 - 17:13) vik1249 написал(а):
Цитата (neadekvat @ 15.08.2011 - 14:02)
Ах, извините, Ваше Величество, что мы осмелились усомнится в целесообразности выбранного Вами пути и, о Боги, посмели предложить более рациональный вариант. Клятвенно клянусь за себя и за kirik'a впредь так не делать.

Зачем ВЫ так пишете? я же нормально попросил помощи, по поводу kirik'a, могу сказать одно то что он прав в rss проще и меньше объем страницы, но проблема от этого не решится

Спустя 4 минуты, 54 секунды (15.08.2011 - 17:18) neadekvat написал(а):
$text = '<td style="text-align: left; vertical-align: middle;"></td></tr>
<tr><td class="currency">EUR</td>
<td style="text-align: left; width: 2em; padding-right: 0px;" id="EURcashBy">41</td>
<td style="text-align: left; vertical-align: middle;"></td>
<td style="text-align: left; width: 2em; padding-right: 0px;" id="EURcashSell">42,2</td>'
;

preg_match_all('#id="(?:EURcashBy|EURcashSell)">([\d,]{2,4})#', $text, $out);
print_r($out[1]); // Array ( [0] => 41 [1] => 42,2 )

Спустя 32 минуты, 44 секунды (15.08.2011 - 17:51) vik1249 написал(а):
Цитата (neadekvat @ 15.08.2011 - 14:18)
$text = '<td style="text-align: left; vertical-align: middle;"></td></tr>
<tr><td class="currency">EUR</td>
<td style="text-align: left; width: 2em; padding-right: 0px;" id="EURcashBy">41</td>
<td style="text-align: left; vertical-align: middle;"></td>
<td style="text-align: left; width: 2em; padding-right: 0px;" id="EURcashSell">42,2</td>'
;

preg_match_all('#id="(?:EURcashBy|EURcashSell)">([\d,]{2,4})#', $text, $out);
print_r($out[1]); // Array ( [0] => 41 [1] => 42,2 )

спасибо за ответ, теперь другая проблема
Array ( [0] => 41 [1] => 42 ) а должно быть 42,2

Спустя 13 минут, 56 секунд (15.08.2011 - 18:05) neadekvat написал(а):
А у меня 42,2 показывает.

Попробуй так:
preg_match_all('#id="(?:EURcashBy|EURcashSell)">([^<]+)#', $text, $out);

Спустя 8 минут, 4 секунды (15.08.2011 - 18:13) vik1249 написал(а):
Цитата (neadekvat @ 15.08.2011 - 15:05)
А у меня 42,2 показывает.

Попробуй так:
preg_match_all('#id="(?:EURcashBy|EURcashSell)">([^<]+)#', $text, $out);

ага ок работает спасибо, я сам так пробывал тока плюс забыл поставить sad.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.