我有一个包含简单的数学题1 + 10,2 + 2,5-3串...我希望能够匹配这些数学问题和解决方案替换它们。Preg_replace解决简单的数学问题?
这样:吉米变成5 + 5上周五。改为:吉米周五将变为10。
我不需要乘除在这一点,所以我认为它比较简单但林不经典的PHP培训。我认为我需要一个REGEX来解决问题,但我几乎从那里输了。
1+10 becomes 11
2+2 becomes 4
我有一个包含简单的数学题1 + 10,2 + 2,5-3串...我希望能够匹配这些数学问题和解决方案替换它们。Preg_replace解决简单的数学问题?
这样:吉米变成5 + 5上周五。改为:吉米周五将变为10。
我不需要乘除在这一点,所以我认为它比较简单但林不经典的PHP培训。我认为我需要一个REGEX来解决问题,但我几乎从那里输了。
1+10 becomes 11
2+2 becomes 4
只是 “EVAL” 替换 - 但照顾,它的eval(Demo):
$subject = 'Jimmy turns 5+5 on Friday, Martha 1+10 on Saturday and Petra is 2*2 today.';
$pattern = '~(\d+[*/+-]\d+)~e';
# ^^^ e = eval modifier
# Jimmy turns 10 on Friday, Martha 11 on Saturday and Petra is 4 today.
echo preg_replace($pattern, '$1', $subject);
巧妙使用eval,但要注意的eval d的= – afuzzyllama
@hakre由于一吨,我所需要的。 –
哪些是你遇到问题的一部分?制定合适的正则表达式?做计算?将结果代入输出字符串? –
就像奥利说的那样,这里有什么问题呢? –
你需要写一个正则表达式来隔离和捕获两个数字和运算符。然后分析运算符并评估表达式(从正则表达式的捕获部分),并用评估表达式的结果替换原始模式。当你增加数学表达式的复杂性时,正则表达式处理它们的适当性就会降低,并且最终你可能最终需要一个语法和词法分析器来处理表达式,即使你继续使用正则表达式来隔离数学表达。 –