数学方程的Php正则表达式

时间:2016-10-22 20:48:19

标签: php regex preg-replace

我有一个包含数学公式的字符串,如下所示

$eq = '(x^2) * (x^3) = x^5';

我需要替换^并将值更改为php相关函数

$eq = 'pow(x, 2) * pow(x, 3) = pow(x, 5)';

我试过了:

$eq = preg_replace('/(\d+)\w\^\w(\d+)/', "pow($1, $2)", '(x^2) * (x^3) = x^5');

但没有工作。

2 个答案:

答案 0 :(得分:0)

你的正则表达式(\ d +)\ w \ ^ \ w(\ d +)没有捕获(x ​​^ 2)因为它需要在x之前有一个数字,而在^和\ d +之间有一些数字。

如果你想让一些参数可选,你可以用“?”

作为后缀

如果您的所有元素都是(x ^ n)或x ^ n类型,则此正则表达式有效:

$eq = preg_replace('/\(?(\w+)\^(\d+)\)?/', "pow($1, $2)", $eq);

答案 1 :(得分:0)

$eq          = '(x^2) * (x^3) = x^5';
$replacement = 'pow($1,$2)';

print preg_replace('/\(?(x)\^(\d)\)?+/', $replacement, $eq);