[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: preg_replace и eval
E1ion
нужно вывести результат формулы задоной в строке... пишу так:
PHP
$x=11;
echo preg_replace("/([\$][\w]*||[\d]*)([\+\-\*\/]*)([\$][\w]*||[\d]*)*/", eval("return round(\\0);")), '$x+5-22');

а как надо? smile.gif



Спустя 37 минут, 54 секунды (8.06.2009 - 04:40) kirik написал(а):
Так?
PHP
$x = 11;
eval(
"echo {$x}+5-22;");


А вообще, в регулярных выражениях, чтобы заменяемая часть выполнялась нужно добавить модификатор e.

Спустя 26 минут, 59 секунд (8.06.2009 - 05:07) E1ion написал(а):
проблема в том что формула находится в тексте и текст и формула меняются... но формула в тексте только 1на smile.gif например так:
PHP
$x=2;
$s='сегодня $x-17*3+74 мальчиков прыгало на батуте';
echo preg_replace("/ ( \$\w*||\d* )( [\+\-\*\/]* ( \$\w*||\d* ) )* /e", eval("return round(\\0);"), $s);

что-то я кажысь намудрил с формулой регулярного...
получаем
PHP
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in W:\home\to.my\www\engine.php(24) : eval()'d code on line 1
0с0е0г0о0д0н0я0 0
$0x00000000 0м0а0л0ь0ч0и0к0о0в0 0п0р0ы0г0
biggrin.gif

Спустя 1 час, 25 минут, 30 секунд (8.06.2009 - 06:32) E1ion написал(а):
PHP
"/([\d]+|[\$][\w]+)([\-\+\*\/]([\d]+|[\$][\w]+))+/"

надо... мда в 7 утра неочень бошка варит...

Спустя 2 минуты, 56 секунд (8.06.2009 - 06:35) E1ion написал(а):
кароче надо было всего-то зделать
PHP
echo preg_replace("/([\d]+|[\$][\w]+)([\-\+\*\/]([\d]+|[\$][\w]+))+/e""\\0"$s);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.