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

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

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

 

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

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

тема: вытягивание определённого текста
 
 автор: Webmaster-X   (17.01.2007 в 12:04)   письмо автору
 
 

есть переменная с содержанием


'0.000000">buy 0.19sell 0.29 '+


подскажите как обработать это содержимое чтоб получилось

0.19::0.29

   
 
 автор: kasmanaft   (17.01.2007 в 12:37)   письмо автору
 
   для: Webmaster-X   (17.01.2007 в 12:04)
 

Вот так, например:

<?
$text 
"'0.000000\">buy 0.19sell 0.29 '+";
preg_match("#buy ([\d\.]+)sell ([\d\.]+) #"$text$regs);
echo 
$regs[1].'::'.$regs[2];
?>

   
 
 автор: Webmaster-X   (17.01.2007 в 14:09)   письмо автору
 
   для: kasmanaft   (17.01.2007 в 12:37)
 

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

<?
$array 
file("http://www.uaportal.com/cgi_bin/getblock.cgi?url=currency");

$count count($array);

for (
$i=0$i<$count$i++)
{
         
$rt strip_tags($array[$i]);

         if (!
ereg("sell"$rt))
         {
             unset(
$rt);
         }
         if (
$rt != null)
         {

              
preg_match("#buy ([\d\.]+)sell ([\d\.]+) #"$rt$regs);

              
$array_kurs[] = $regs[1].'::'.$regs[2];
         }

}

$array_kurs join("<br />",$array_kurs);

print 
$array_kurs ;
?>


подскажите в чём может быть причина

   
 
 автор: kasmanaft   (17.01.2007 в 15:22)   письмо автору
 
   для: Webmaster-X   (17.01.2007 в 14:09)
 

На самом деле buy и sell от цены разделяются не пробелом, а &nbsp;
То есть нужно либо заменить нбсп на пробел, либо немного изменить рег. выражение

В принципе, Ваш код можно немного упростить:
<? 
$text 
file_get_contents("http://www.uaportal.com/cgi_bin/getblock.cgi?url=currency"); 
$rt strip_tags($text);
$rt str_replace("&nbsp;"" "$rt);
preg_match_all("#buy ([\d\.]+)sell ([\d\.]+) #"$rt$regs);
for (
$i 0$i count($regs[1]); $i++)
    
$array_kurs[] = $regs[1][$i].'::'.$regs[2][$i];
$array_kurs join("<br />",$array_kurs); 
print 
$array_kurs;
?>

   
 
 автор: Webmaster-X   (18.01.2007 в 11:25)   письмо автору
 
   для: kasmanaft   (17.01.2007 в 15:22)
 

Вроде всё понятно и правельно, цыкл проходит 3 раза, а появляются повторения результат

0.19::0.19
6.53::6.63
5.06::5.09
0.19::0.19
6.53::6.63
5.06::5.09

если вместо count($regs[1])
поставить ноль тогда всё правильно срабатывает

или заменить

<?
$array_kurs 
join("<br />",$array_kurs); 
?>


на

<?
$array_kurs 
join("<br />",array_unique($array_kurs));
?>


но это былобы наверное неправильно.

чё не правильно?

==================
ага разобрался

   
Rambler's Top100
вверх

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