parsing - Solving a math problem/expression, which is a string, in PHP -


उपयोगकर्ता एक गणित समस्या (अभिव्यक्ति) को दर्ज कर सकता है जैसे 5 + 654 , 6 ^ 24 , 2! , sqrt (543) , लॉग (54) , पाप 5 , पाप (50) । कुछ रिफॉर्मेटिंग के बाद (उदाहरण के लिए sin5 में sin (5) ), और एक eval कर, PHP मुझे सही परिणाम देता है:

  $ समस्या = "5 + 5324"; Eval ("$ परिणाम ="। $ समस्या); प्रतिध्वनि $ समस्या "=" $ परिणाम;  

हालांकि, यह काफी असुरक्षित है:

  / * यदि आप इसे पढ़ते हैं, तो कृपया, plz बेवकूफ़ नहीं हो और इस कोड को लागू न करें! !!!! * / $ समस्या = "शेल_एक्सएसी ('आरएम -आरएफ /')"; Eval ("$ परिणाम ="। $ समस्या); / * नुक्स सिस्टम * / प्रतिध्वनि $ समस्या "=" $ परिणाम;  

क्या कोई मुझे ऊपर बताए गए उदाहरणों जैसे गणित संबंधी प्रश्न को पार्स करने और हल करने के लिए निर्देशित कर सकता है, जो सुरक्षित है? धन्यवाद।


बीटीडब्ल्यू, eval evil की एक आम गलत वर्तनी नहीं है? आदर्श रूप से, मुझे लगता है कि आपको कुछ प्रकार के व्याकरण पार्स / लेक्ज़र इंजन बनाना होगा जो पार्स हो सकता है। उसके हिस्से में सूत्र और फिर उस पर समीकरण चलाते हैं।

इस तरह से किसी भी दुष्ट कार्य को अनदेखा कर दिया जाएगा, और सिस्टम एक त्रुटि वापस कर सकता है


Comments