Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> замена строк, в переборе массива 
V
    Опции темы
supercelt
Дата 15.9.2008, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



есть такая штука - OS commerce. Там можно сортировать товар по ценам. внешне это выглядит так:

Код

Сортировка по цене    

До 100
От 100 до 250
От 250 до 500
От 500 до 1000
От 1000 и выше


Вот эти строки (до 100, от 100 до 250  и тд), выводятся в цикле. Проблема в том, что когда на сайте меняешь валюту с рублей на евро, то цифры остаются такими же, хотя по логике они должны превращаться в евро. Так вот так как выборка из базы всё-равно ведётся по рублям, я хотел в этом цикле просто заменить цены на евро, если будет включена опция евро. 

вот мой код:

Код

for ($range=0; $range<sizeof($price_ranges); $range++) 
    {
      if($currency=='RUR')
      {
      $pr=$price_ranges[$range];
      }
      elseif($currency=='EUR')
      {
       $new_pro1=100*0.0274;
        settype($new_pro1, 'string');
       $new_pro2=250*0.0274;
        settype($new_pro2, 'string');
       $new_pro3=500*0.0274;
        settype($new_pro3, 'string');
       $new_pro4=1000*0.0274;
        settype($new_pro4, 'string');
        
       $pr=eregi_replace('100', $new_pro1, $price_ranges[$range]);
       $pr=eregi_replace('250', $new_pro2, $price_ranges[$range]);
       $pr=eregi_replace('500', $new_pro3, $price_ranges[$range]);
       $pr=eregi_replace('1000', $new_pro4, $price_ranges[$range]);
        
      }
     $info_box_contents[] = array('align' => 'left',
                                 'text'  => '<a href="' . tep_href_link(FILENAME_SHOP_BY_PRICE, 'range=' . $range , 'NONSSL') . '">' . $pr . '</a><br>' 
                                );
    }        


Но он как-то не работает. Мне нужно просто выделить из строки цифры (причём учесть, что в одной строке может быть две цены и одна, к примеру - строка цена только до 100 и строка цена от и до, и учесть, что если искать в строке 100, то при 1000 тоже может ложно сработать) и замненить их на евро.
PM   Вверх
whyte
Дата 16.9.2008, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 6.6.2008

Репутация: нет
Всего: нет



То есть проблема в том, чтобы в одном случае вывести:
До $range[0]

А в другом 
От $range[0] до $range[1]

так?

Это сообщение отредактировал(а) whyte - 16.9.2008, 10:35
PM MAIL   Вверх
supercelt
Дата 16.9.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Нет, проблема, в том что надо просто из этого текста, строки которого выводятся в цикле:

Код

Сортировка по цене    

До 100
От 100 до 250
От 250 до 500
От 500 до 1000
От 1000 и выше


Сканить только цифры и заменить их на евро.
Но я уже разобрался, может код кривоват, но зато работает)

Код

if($currency=='EUR')
{//if
$price_ranges2=$price_ranges;
$price_ranges=array();
 function get_content() 
 { 
 $date = date("d/m/Y"); 
 $link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; 
 $fd = @fopen($link, "r"); 
 $text=""; 
  if (!$fd) 
     {  
     //echo "Курс доллара не доступен!!!"; 
     }
     else 
     { 
        while (!feof ($fd)) $text .= fgets($fd, 4096); 
     } 
 @fclose ($fd); 
 return $text; 
 } 

$content = get_content(); 
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i"; 
preg_match_all($pattern, $content, $out, PREG_SET_ORDER); 
$dollar = ""; 
$euro = ""; 
 foreach($out as $cur) 
 { 
    if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]); 
    if($cur[2] == 978) $euro   = str_replace(",",".",$cur[4]); 
 } 
   if($content=='')
   {
   $dollar=25;
   $euro=36;
   }
//echo "Доллар - ".$dollar."<br />"; 
//echo "Евро - ".$euro."<br />"; 
#==do 100 rub===========================================
$curse1=round((1/$euro)*100, 2);
settype($curse1, 'string');
$go1=ereg_replace('100', $curse1, $price_ranges2[0]);
$price_ranges[0]=$go1;
#=======================================================

#==ot 100 do 250 rub====================================
$curse2=round((1/$euro)*100, 2);
settype($curse2, 'string');
$curse2_1=round((1/$euro)*250, 2);
settype($curse2_1, 'string');
$go2=ereg_replace('100', $curse2, $price_ranges2[1]);
$go2_1=ereg_replace('250', $curse2_1, $go2);
$price_ranges[1]=$go2_1;
#=======================================================

#==ot 250 do 500 rub====================================
$curse3=round((1/$euro)*250, 2);
settype($curse3, 'string');
$curse3_1=round((1/$euro)*500, 2);
settype($curse3_1, 'string');
$go3=ereg_replace('250', $curse3, $price_ranges2[2]);
$go3_1=ereg_replace('500', $curse3_1, $go3);
$price_ranges[2]=$go3_1;
#=======================================================

#==ot 500 do 1000 rub===================================
$curse4=round((1/$euro)*500, 2);
settype($curse4, 'string');
$curse4_1=round((1/$euro)*1000, 2);
settype($curse4_1, 'string');
$go4=ereg_replace('500', $curse4, $price_ranges2[3]);
$go4_1=ereg_replace('1000',$curse4_1, $go4);
$price_ranges[3]=$go4_1;
#=======================================================

#==ot 1000 rub==========================================
$curse5=round((1/$euro)*1000, 2);
settype($curse5, 'string');
$go5=ereg_replace('1000', $curse5, $price_ranges2[4]);
$price_ranges[4]=$go5;
#=======================================================
  
}//if

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0419 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.