Экспорт курса доллара...

Sadam

Guest
Экспорт курса доллара...

Вот написал скрипт по экспорту курса доллара из html файла:
PHP:
$data = join ('', file ('fin.htm'))) {
$data = split("\n", $data);
$i=0;
$to=count($data);
$o = 0;
while($i<$to) {
if(eregi("^&nbsp;<B>", $data[$i])) {
                        $kurs[$o] = $data[$i];
                        $kurs[$o] = ereg_replace("&nbsp;<B>\s*","",$kurs[$o]);
                        $kurs[$o] = ereg_replace("</b>&nbsp;","",$kurs[$o]);
                        $o++;
                }
                $i++;
        }
 

Sadam

Guest
Экспорт курса доллара...

Вот написал скрипт по экспорту курса доллара из html файла:
PHP:
$data = join ('', file ('fin.htm'))) {
$data = split("\n", $data);
$i=0;
$to=count($data);
$o = 0;
while($i<$to) {
        if(eregi("^&nbsp;<B>", $data[$i])) {
                $kurs[$o] = $data[$i];
                $kurs[$o] = ereg_replace("&nbsp;<B>","",$kurs[$o]);
                $kurs[$o] = ereg_replace("</b>&nbsp;","",$kurs[$o]);
                $o++;
        }
        $i++;
}
Все работает нормально... если информация берется между тегами:
&nbsp;<B>Текст</b>&nbsp;

а если сделать так:
&nbsp;<B>(перенос строки)
Текст(перенос строки)
</b>&nbsp;
Ни чего не получается...

пробовал так:
PHP:
$kurs[$o] = ereg_replace("&nbsp;<B>\s*","",$kurs[$o]);
$kurs[$o] = ereg_replace("\s*</b>&nbsp;","",$kurs[$o]);
не получается, хотя по идее должно получится....

в чем ошибка?
 

abrex

Guest
незнаю, получится или нет, но попробуй так:

PHP:
$kurs[$o] = ereg_replace("&nbsp;<B>
*","",$kurs[$o]); 

$kurs[$o] = ereg_replace("
*</b>&nbsp;","",$kurs[$o]);
т.е. вместо /s делай перенос строки
 

Kapacb

Новичок
Если действительно нужен курс доллара, то на много проще его взять от сюда: http://www.rbc.ru/out/801.csv
 

Sadam

Guest
Originally posted by SiMM
[m]PCRE[/m], что-то я не слышал, чтобы POSIX умел \s ( var_dump(ereg('\s',"\n")) ; ).
Пробовал с preg_replace:
$kurs[$o] = preg_replace("/&nbsp;<B>/i", "", $kurs[$o]);
$kurs[$o] = preg_replace("/</b>&nbsp;/i", "", $kurs[$o]);

Вообще ни чего не выдает...

Походу я че-то не то делаю...

Люди добрые помогите плыззз... напишите как правильно
 

SMaster

Guest
Sadam, вообще-то не очень понятно что требуется - что нужно получить и из какого контекста. Может тебе вот это нужно???
PHP:
$str = '&nbsp;<B>
27.80
</b>&nbsp;
всякая всячина&nbsp;<b>27.89</b>&nbsp;';

preg_match_all('/&nbsp;<b>\s*([^<]+)\s*<\/b>&nbsp;/i', $str, $matches);

foreach($matches[1] as $match) {
   echo "$match<br>";
}
 

Sadam

Guest
Автор оригинала: SMaster
Sadam, вообще-то не очень понятно что требуется - что нужно получить и из какого контекста.
объясняю еще раз:

Надо экспортировать курс доллара из html:

полный код см. выше

из контекста
PHP:
&nbsp;<B>Курс</b>&nbsp;
я экспортирую так:
PHP:
$kurs[$o] = ereg_replace("&nbsp;<B>\s*","",$kurs[$o]); 
$kurs[$o] = ereg_replace("</b>&nbsp;","",$kurs[$o]);
все получается:

мне надо модифицировать скрипт, чтобы выдирал из такого контекста:
PHP:
&nbsp;(перенос строки)
           <B>Курс</b>(перенос строки)
&nbsp;
как я понимаю нужно использовать preg_replace.
Вот мой пример... вроде все правильно, но не работает...
PHP:
$kurs[$o] = preg_replace("/&nbsp;<B>\s*/i", "", $kurs[$o]);
$kurs[$o] = preg_replace("/\s*</b>&nbsp;/i", "", $kurs[$o]);
В чем ошибка?
 

SiMM

Новичок
Sadam, не работает - это даже не описание проблемы. Код может неработать только тогда, когда при попытке его интерпретации ты получаешь parse error. Вообще, подозреваю, что тебя должен интересовать модификатор s - но поскольку проблемы ты так и не описал - думай сам.
 

Sadam

Guest
Проблемма в том что у меня где-то ошибка...

а модификатор s если приглядется по лучше я использую
 

SMaster

Guest
Sadam, попробуй абстрагироваться от своего первоначального решения, подойти к проблеме с другой стороны.
Можешь привести пример HTML`а и значения на выходе для него? Тогда станет понятно откуда что получить требуется.
 

SiMM

Новичок
Автор оригинала: Sadam
а модификатор s если приглядется по лучше я использую
ГДЕ?
Батенька, не надо путать метасимволы и модификаторы паттерна - это абсолютно разные вещи.
PS: и ещё раз повторяю - фраза "проблема в том, что у меня где-то ошибка" - это не описание проблемы. Описание проблемы обычно включает в себя входные данные, код и ожидаемый результат, а так же выводимые на экран ошибки, если они имеются.
 

Sadam

Guest
Исходный текст выглядит так...
PHP:
&nbsp;<B>
	27.7487
</b>&nbsp;
нужно получить - 27.7487
 

SiMM

Новичок
Sadam, ну и в чём проблема? Иди и получай. Делается это одним регулярником, а не десятоком.
Проблемы с регулярниками? Используй строковые функции, либо читай Регулярные выражения, Часть I + Часть II, ну и ман конечно же [m]PCRE[/m]
PS: здесь нет нянек, регулярники тебе всё равно придётся изучить, модификатор, который тебе может пригодиться, я уже назвал.
 
Сверху