Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2010, 22:26   #1
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
Вопрос preg_replace ?? или что то другое...

в общем вот код:
PHP код:
<?php

$news
="курс доллара 35,8044 рубля,  евро 35,9044 рубля, разница составила 10 копеек";
preg_match_all('/([0-9]+,[0-9]+)/'$news$out);
 
$count=count($out[1]);
for (
$n=0;$n<=($count-1);$n++){
 
$poisk=$out[1][$n];
if(
strstr($out[1][$n], ",")) {
 
$output str_replace(",""."$out[1][$n]);
 
$reoutput=round($output,2);
 
$rez str_replace("."","$reoutput);
 
$vstavka=$rez;
$rezultpreg_replace("|$poisk|i",$vstavka,$news);
    echo 
"<pre>";
    echo 
$rezult;
}
}
?>
результат работы кода:
Цитата:
курс доллара 35,8 рубля, евро 35,9044 рубля, разница составила 10 копеек
курс доллара 35,8044 рубля, евро 35,9 рубля, разница составила 10 копеек
не удается сделать так:
Цитата:
курс доллара 35,8 рубля, евро 35,9 рубля, разница составила 10,00 копеек
где мне еще тсоит покапаться?
micron вне форума Ответить с цитированием
Старый 17.02.2010, 22:44   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

То есть, нужно округление? Воспользуйтесь функциями обработки строк - найдите первое вхождение запятой и получите в переменную нужное кол-во символов. Далее замените с пом. str_replace дробные части на нужные
motorway вне форума Ответить с цитированием
Старый 17.02.2010, 22:54   #3
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
По умолчанию

нет, не округление, имеется текст
Цитата:
курс доллара 35,8044 рубля, евро 35,9044 рубля, разница составила 10 копеек
а надо
Цитата:
курс доллара 35,8 рубля, евро 35,9 рубля, разница составила 10,00 копеек
,
я числа округлил, но проблема их заменить вместо 35,8044 вставить 35,8, а вместо 35,9044 35,9, не могу обратно вернуть числа, почему то текст дублируется
micron вне форума Ответить с цитированием
Старый 17.02.2010, 23:13   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

может быть, из-за цикла в начале? заменить - str_replace
motorway вне форума Ответить с цитированием
Старый 17.02.2010, 23:21   #5
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
По умолчанию

str_replace и preg_replace принцип тот же, с циклом согласен, моск уже сломал. как вывести конечный результат в одном тексте с нужными цифрами
micron вне форума Ответить с цитированием
Старый 17.02.2010, 23:22   #6
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

наверно, поместить echo снаружи цикла
motorway вне форума Ответить с цитированием
Старый 17.02.2010, 23:39   #7
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
По умолчанию

тут тема такая,при выполнении кода,находится число, потом ее округляет, записывает(!) хз куда, переходит ко второму числу, тоже самое записывает , потом я вывожу на экран результат, и результат тока выводится с последним значением (( а первый уже перезаписан последним, вот думаю может просто в массив его записать или есть другой способ куда данные , как бы в ячейку все поскидывать и от туда их выбирать?
p.s. надеюсь правильно изложил мысль
micron вне форума Ответить с цитированием
Старый 17.02.2010, 23:42   #8
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

как округление, так и вывод данных здесь не представляет затруднений. Если нужно сохранять их куда-то, добавляйте в массив - на каждом шагу можно сделать $array[] - добавит в конец новый элемент.
motorway вне форума Ответить с цитированием
Старый 17.02.2010, 23:45   #9
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Я бы попробовал как-нибудь упростить алгоритм
motorway вне форума Ответить с цитированием
Старый 17.02.2010, 23:57   #10
micron
Пользователь
 
Аватар для micron
 
Регистрация: 05.01.2010
Сообщений: 18
По умолчанию

Цитата:
Сообщение от motorway Посмотреть сообщение
как округление, так и вывод данных здесь не представляет затруднений. Если нужно сохранять их куда-то, добавляйте в массив - на каждом шагу можно сделать $array[] - добавит в конец новый элемент.
не знай не знай, проблема в том что числа все с запятыми, а функции работают тока с точками, в любом случае надо формат,например алгоритм?
найти число дробное, посчитать сколько их в тексте, записать их в массив(присвоив каждому свой $key),заменить запятую на точку,округлить до сотых,записать новые результаты в массив,заменить старые значения на новые в тексте.
примерно так я думаю,твое предложение
micron вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрев или что то другое? AbRaKaTaBrA Компьютерное железо 11 09.02.2010 14:45
скопировал фотки, удалил их с карты, вставить забыл. Потом скопировал что-то другое, Как зайти в буфер? Арчо Операционные системы общие вопросы 3 09.08.2009 17:53
С помощью чего реализовано? Php, javascript, или вообще что-то другое? nikolai_P PHP 7 23.06.2009 15:23
запрос в MYSQL WHERE по информации или что то другое? memka PHP 4 13.04.2009 23:16
preg_replace Def@ult PHP 2 12.11.2007 01:58