23 lines
795 B
PHP
23 lines
795 B
PHP
<?php
|
|
header("Content-Type: application/json; charset=utf-8");
|
|
$in = json_decode(file_get_contents("php://input"), true) ?: $_POST ?: $_GET;
|
|
$expr = trim($in["expression"] ?? $in["q"] ?? "");
|
|
if (!$expr) { echo json_encode(["error"=>"expression required"]); exit; }
|
|
|
|
// Sanitize: allow only numbers, operators, parens, decimal
|
|
$safe = preg_replace('/[^0-9+\-*\/().\s,]/', '', $expr);
|
|
$safe = str_replace(",", ".", $safe);
|
|
if (!$safe) { echo json_encode(["error"=>"invalid expression"]); exit; }
|
|
|
|
try {
|
|
$result = @eval("return ($safe);");
|
|
echo json_encode([
|
|
"expression" => $expr,
|
|
"sanitized" => $safe,
|
|
"result" => $result,
|
|
"provider" => "WEVIA Calc",
|
|
]);
|
|
} catch (Throwable $e) {
|
|
echo json_encode(["error"=>"eval failed", "expression"=>$expr]);
|
|
}
|