Bir dizenin matematiksel bir ifadeyi temsil edip etmediğini kontrol etmek için bir PHP işlevi yazmaya çalışıyorum. Ben bu olasılıklar ile test ediyorumPHP Bir dizenin matematiksel bir ifade olduğunu doğrulayın
function is_math($maybe_math){
$pattern = '([-+]?[0-9]*\.?[0-9]+[\/\+\-\*])+([-+]?[0-9]*\.?[0-9])';
if(0 === preg_match($maybe_math, $pattern)){
return true;
}
}
:
$valid = is_math('(1-4*(9*5/1)+1)'); //true
$invalid = is_math('hats' ); //false
$valid_and_invalid = is_math('(1-4aaa*(9*5/1)+1k)'); //true
Gördüğünüz gibi, şimdiye kadar matematiksel bir ifade için de geçerlidir değerlendirir veya bir dize ile
Bu
ben ne var geçerli matematik karakterleri ve geçersiz matematik karakterleri. Şu anda gösterdiğim üçüncü test yanlış olmalı, çünkü harflerin içinde harfler var ve ben burada cebir yapmıyorum.Buradaki amacım, dizelerimin değerlendirmeye iletilebildiğini ve bir numaranın geri alınabileceğini ve güvenli olmayan kodun yürütülmesini riske atmayacağımı doğrulamak için kullanabileceğim bir işlev oluşturmaktır; çünkü bu sayılar kısmen POST verilerinden gelir.
Şimdi sorun ne? – Rizier123
Olası kopyası [Matematik ifadesini normal ifadeyle eşleştirme?] (Http://stackoverflow.com/questions/2595254/matching-math-expression-with-regular-expression). Php çözümü ile yanıtı kontrol edin: http://stackoverflow.com/a/2596378/2253302 –
php eval işlevini kullanın ve evet bu soru çift kopyalayın – Saleem