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 :: Замена с помощью preg_replace
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
Добрый день, бьюсь тут над одной задачей не могу решить.
Задача есть переменная в которой находится текст. Нужно в этом тексте найти сумму, преобразовать в число и умножив на нужный коэффициент вернуть на место.
Мое решение:
Но работать отказывается, думаю что загвоздка прячется в районе str_replace но что поправить не пойму.
Спасибо.Отредактировано модератором: JustUserR, 10 Июня, 2010 - 10:56:42 Обрамил PHP-код в соответствующий BB-тег
qbik
Отправлено: 10 Июня, 2010 - 09:04:39
Гость
Покинул форум
Сообщений всего: 114
Дата рег-ции: Июнь 2010
Как другой вариант решения проблемы можно обрамить значение символьного класса в круглые скобки - в таком случае так как они являются запоминающими то создадут обратную ссылку которая как раз и должна передаться в функцию обработчки
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Set
Отправлено: 10 Июня, 2010 - 12:02:21
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
JustUserR пишет:
Как другой вариант решения проблемы можно обрамить значение символьного класса в круглые скобки - в таком случае так как они являются запоминающими то создадут обратную ссылку которая как раз и должна передаться в функцию обработчки
Покажи свой вариант если не сложно. Не совсем понял
SetТы в функцию не посылал цифру для обсчета, поэтому и получал 0
Обнаружил что этот вариант прокатывает если в контенте только одна переменная, которая нам нужна. Если в нем например их несколько то отображается только первая.
если же использую функцию
preg_match_all("/[0-9]* /", $pos, $text);
то соответственно все это работает по последнему - то есть не работает.Отредактировано модератором: JustUserR, 11 Июня, 2010 - 15:11:11 Исправил некоторые BB-теги
qbik
Отправлено: 10 Июня, 2010 - 13:45:33
Гость
Покинул форум
Сообщений всего: 114
Дата рег-ции: Июнь 2010
Помог: 0 раз(а)
Set функция preg_match("/[0-9]* /", $pos, $text);
помещяет в $text массив всех совпавших значений
следовательно можно сделать так
</thead><tbody>100 руб.<tr>200 руб.<td style='text-align: right;'>600 руб.<td style='text-align: right;'>10000 руб.<br>";// сам текст
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Set пишет:
Покажи свой вариант если не сложно. Не совсем понял
Ваше регулярное выражение приведенное в первом сообщений содержало обратную ссылку в строке замены - а чтобы задейстовать определенную обратную ссылку нужно взять сохраняемый в нее фрагмент текста в запонимающие круглые скобки
Конкретно это preg_replace("/([0-9]*)\ /", repl('$0'), $pos) - и также если вы используете определенную фунцию для замены то можно делать callback-вариант регулярного выражения
PS Тема содержит вопрос по регулярным выражениям - поэтому переношу ее в соответствующий раздел
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Set
Отправлено: 16 Июня, 2010 - 18:14:47
Новичок
Покинул форум
Сообщений всего: 7
Дата рег-ции: Окт. 2009
Помог: 0 раз(а)
Спасибо большое все заработало, долго я бы это копал
JustUserR
Отправлено: 17 Июня, 2010 - 11:03:30
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Set пишет:
Спасибо большое все заработало, долго я бы это копал
Пожалуйста! Вообще передача заменяемого значения в функции preg_replace осуществляется похожим образом вне зависимости от того имеется ли там чистая строка или некоторая функция над ней - во втором аргументе смотрятся все строковые переменные и константы и в них ищется дословное значение доллар+индекс или слеш+индекс для которого и происходит подстановка - причем поиск в стороквых константах происходит не относительно PHP-кода а относительно хранимых представлений данных - благодаря этому можно генерировать строки с заменой динамически
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.