我有一個包含簡單的數學題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由於一噸,我所需要的。 –
哪些是你遇到問題的一部分?制定合適的正則表達式?做計算?將結果代入輸出字符串? –
就像奧利說的那樣,這裏有什麼問題呢? –
你需要寫一個正則表達式來隔離和捕獲兩個數字和運算符。然後分析運算符並評估表達式(從正則表達式的捕獲部分),並用評估表達式的結果替換原始模式。當你增加數學表達式的複雜性時,正則表達式處理它們的適當性就會降低,並且最終你可能最終需要一個語法和詞法分析器來處理表達式,即使你繼續使用正則表達式來隔離數學表達。 –