[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регялярное выражение ^ в степень
wollk
echo $str="+5^10+";
$array_sh=array("/^[^\+\-\*\/](.*)\^(.*)[\+\-\*\/]/uiU","/[\+\-\*\/](.*)\^(.*)[\+\-\*\/]/uiU","/[\+\-\*\/](.*)\^(.*)[^\+\-\*\/]$/uiU");

$str=preg_replace($array_sh,"pow($1,$2)",$str);//
echo "<br>".$str;

Написал вот такой код
Работает конечно не корректно. И не правильно (
Нужно сделать, чтобы вот в любой строке, что-то^степень преобразовывалось в pow(что-то,степень)

Уже несколько дней ломаю голову.... Могут ведь быть и скобочки.. например (выражение)^(x*x+24*x)

Может есть готовое решение, преобразующее математическую строку, в понятную для PHP
Winston
Нужно добавить модификатор e. А лучше использовать preg_replace_callback т.к. мод. е уже deprecated в версии php5.5
wollk
<?php 
echo $str="+5^10+";
$array_sh=array("/^[^\+\-\*\/](.*)\^(.*)[\+\-\*\/]/uiUe","/[\+\-\*\/](.*)\^(.*)[\+\-\*\/]/uiUe","/[\+\-\*\/](.*)\^(.*)[^\+\-\*\/]$/uiUe");

$str=preg_replace_callback($array_sh,"pow($1,$2)",$str);//
echo "<br>".$str;
?>


ошибка

+5^10+
Warning: preg_replace_callback() [function.preg-replace-callback]: Requires argument 2, 'pow($1,$2)', to be a valid callback in D:\WebServer\domains\shul\poligon.php on line 14

+5^10+
Winston
Если ты добавил мод. e тогда пиши так
$str=preg_replace($array_sh,"pow($1,$2)",$str);

Если без мод. е, тогда так
$str=preg_replace_callback($array_sh,function($item){return pow($item[1], $item[2]);},$str);
wollk
ого, круто, но чуть не то надо, как вообще заставить регулярко преобразовывать текст, так как я хотел. ЧТобы потом использовать eval
Быстрый ответ:

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