Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich mathematische Ausdrücke aus Strings in PHP sicher auswerten?

Wie kann ich mathematische Ausdrücke aus Strings in PHP sicher auswerten?

Barbara Streisand
Freigeben: 2024-12-08 17:12:11
Original
576 Leute haben es durchsucht

How Can I Safely Evaluate Mathematical Expressions from Strings in PHP?

Mathematische Auswertung von Strings mit PHP

Die Auswertung mathematischer Ausdrücke, die in Strings eingebettet sind, ist eine häufige Anforderung in der Programmierung. In PHP erfordert das Erreichen dieser Aufgabe spezielle Ansätze, um potenzielle Sicherheitsrisiken zu vermeiden.

Die inhärente Gefahr von eval()

Viele Ressourcen empfehlen die Verwendung der Funktion eval(), um als Zeichenfolgen gespeicherte Ausdrücke auszuwerten. Allerdings stellt diese Methode ein erhebliches Sicherheitsrisiko dar, da sie die Ausführung beliebigen PHP-Codes ermöglicht. In der PHP-Dokumentation wird dringend von dieser Vorgehensweise abgeraten, es sei denn, dies ist unbedingt erforderlich.

Eine sicherere Alternative: Parsen und Lösen von Gleichungen

Für einen sichereren Ansatz sollten Sie die Verwendung einer Parsing-Bibliothek in Betracht ziehen, die Infix-Ausdrücke in Postfix-Ausdrücke (umgekehrt) konvertiert Polnische Notation oder RPN). RPN-Löser können diese Postfix-Ausdrücke dann effizient auswerten, ohne dass eval() erforderlich ist.

Eine solche Bibliothek, eqEOS, bietet ein robustes Framework zum Parsen und Lösen von Gleichungen. Um es zu verwenden, instanziieren Sie die eqEOS-Klasse und rufen die MethodesolveIF() mit der Ausdruckszeichenfolge als Argument auf. Das Ergebnis wird zurückgegeben.

Beispiel: Auswertung von „2-1“

Um den Ausdruck „2-1“ mit eqEOS auszuwerten:

require_once "eos.class.php";
$eq = new eqEOS();
$result = $eq->solveIF("2-1");
echo $result; // Outputs: 1
Nach dem Login kopieren

Andere Optionen

Berücksichtigen Sie neben eqEOS auch diese alternativen Lösungen für mathematische Ausdrücke Auswertung:

  • Wolfram|Alpha API
  • Sage
  • phpdicecalc

Denken Sie daran, dass die Verwendung von eval() für die Ausdrucksauswertung a sein sollte Aufgrund der Sicherheitsaspekte ist dies jedoch der letzte Ausweg. Sichere und robuste Parsing-/Lösungsbibliotheken wie eqEOS bieten einen weitaus besseren Ansatz.

Das obige ist der detaillierte Inhalt vonWie kann ich mathematische Ausdrücke aus Strings in PHP sicher auswerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage