Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menilai Formula Matematik yang Diluluskan sebagai Rentetan dalam PHP dengan Selamat?

Bagaimana untuk Menilai Formula Matematik yang Diluluskan sebagai Rentetan dalam PHP dengan Selamat?

Barbara Streisand
Barbara Streisandasal
2025-01-03 06:29:42713semak imbas

How to Safely Evaluate a Mathematical Formula Passed as a String in PHP?

Bagaimana untuk menilai formula yang diluluskan sebagai rentetan dalam PHP?

Dalam PHP, anda boleh menggunakan fungsi eval() untuk menilai rentetan sebagai kod PHP. Walau bagaimanapun, fungsi ini tidak disyorkan atas sebab keselamatan, kerana ia boleh membenarkan kod hasad dilaksanakan. Alternatif yang lebih selamat ialah menggunakan fungsi create_function(), yang mencipta fungsi daripada rentetan.

Berikut ialah contoh cara anda boleh menggunakan fungsi create_function() untuk menilai ungkapan matematik:

<?php
$expression = '2 + 2';
$fn = create_function('', "return ($expression);");
$result = $fn();
echo $result; // Output: 4

Ini akan mengeluarkan nilai ungkapan, iaitu 4.

Pilihan lain ialah menggunakan perpustakaan yang boleh menilai dengan selamat ungkapan matematik. Salah satu perpustakaan tersebut ialah kelas EvalMath, yang boleh didapati di [pautan ini](http://www.phpclasses.org/browse/package/2695.html).

Berikut ialah contoh cara anda boleh menggunakan kelas EvalMath untuk menilai ungkapan matematik:

<?php
include('evalmath.class.php');
$m = new EvalMath;
$result = $m->evaluate('2 + 2');
echo $result; // Output: 4

Ini juga akan mengeluarkan nilai ungkapan, iaitu 4.

Kaedah yang anda pilih untuk digunakan bergantung pada keperluan khusus anda. Jika anda memerlukan penyelesaian yang ringkas dan mudah digunakan, maka fungsi create_function() ialah pilihan yang baik. Walau bagaimanapun, jika anda memerlukan penyelesaian yang lebih mantap dan selamat, maka kelas EvalMath ialah pilihan yang lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk Menilai Formula Matematik yang Diluluskan sebagai Rentetan dalam PHP dengan Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Salam dari SymfonyArtikel seterusnya:Salam dari Symfony