Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Поиск и замена значений, которые находятся внутри {}

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
denisator
Отправлено: 16 Сентября, 2015 - 17:53:47
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




Подскажите пожалуйста как такое сделать?
Для автоматического перерасчёта стоимости товара указанного в евро на рубли по курсу ЦБ нужно искать по тексту числовые значения в фигурных скобках (например "{12}") умножать их на определённое число (например "5") и заменять на результат (соответственно "{12}" должно замениться на "60 рублей")
 
 Top
andrewkard
Отправлено: 16 Сентября, 2015 - 18:18:21
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




denisator
Учитывая что цена в {} будет целым числом:
PHP:
скопировать код в буфер обмена
  1.  
  2. $str = "Цена {12}";
  3. preg_match('/{(\d+)}/',$str,$matches);
  4. $rate = 5;
  5. $price = (int)$matches[1] * $rate . ' рублей';
  6. echo str_replace($matches[0],$price,$str);
  7.  
 
 Top
denisator
Отправлено: 16 Сентября, 2015 - 18:30:27
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




К сожалению если строка выглядит как:
$str = "Цена {12} а тут другая цена {15} и ещё другая цена {100500}";
то правило применяется только к первой цене:
"Цена 60 рублей а тут другая цена {15} и ещё другая цена {100500} "

(Отредактировано автором: 16 Сентября, 2015 - 18:57:01)

 
 Top
Ts.Saltan
Отправлено: 16 Сентября, 2015 - 19:39:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




PHP:
скопировать код в буфер обмена
  1. $rate = 100500;
  2. $str = preg_replace_callback('/{(\d+)}/', function($m) use ($rate){
  3.  return $m[0] * $rate;
  4. }, $str);
 
 Top
Viper
Отправлено: 16 Сентября, 2015 - 19:46:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




del

(Отредактировано автором: 16 Сентября, 2015 - 19:47:07)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
denisator
Отправлено: 17 Сентября, 2015 - 10:51:53
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2015  


Помог: 0 раз(а)




Ts.Saltan пишет:
PHP:
скопировать код в буфер обмена
  1. $rate = 100500;
  2. $str = preg_replace_callback('/{(\d+)}/', function($m) use ($rate){
  3.  return $m[0] * $rate;
  4. }, $str);


Спасибо! Работает. Только не $m[0], а $m[1]
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB