21 lines
928 B
PHP
21 lines
928 B
PHP
<?php
|
|
function str_trim(string $s): string { return trim($s); }
|
|
function is_email(string $s): bool { return (bool)filter_var($s, FILTER_VALIDATE_EMAIL); }
|
|
function min_len(string $s, int $n): bool { return mb_strlen($s) >= $n; }
|
|
function sanitize(string $s): string { return filter_var($s, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES); }
|
|
|
|
function validate(array $data, array $rules): array {
|
|
$errors = [];
|
|
foreach ($rules as $field => $fns) {
|
|
$value = $data[$field] ?? '';
|
|
foreach ($fns as $fn) {
|
|
[$name, $arg] = array_pad(explode(':', $fn, 2), 2, null);
|
|
$ok = true;
|
|
if ($name === 'required') $ok = ($value !== '' && $value !== null);
|
|
elseif ($name === 'email') $ok = is_email($value);
|
|
elseif ($name === 'min') $ok = min_len($value, (int)$arg);
|
|
if (!$ok) { $errors[$field][] = $fn; }
|
|
}
|
|
}
|
|
return $errors;
|
|
}
|