@ 2023-12-09T03:17:48Z <?php
class ValidSymbolValidator implements ValidatorRuleInterface
{
private string $format = 'В этом поле можно использовать следующие символы: %s. Вы использовали символ(ы), который не входит в этот список, а именно - %s.';
private string $pattern;
private string $verbalDescriptionOfPattern;
public function __construct(string $pattern, string $verbalDescriptionOfPattern)
{
$this->pattern = $pattern;
$this->verbalDescriptionOfPattern = $verbalDescriptionOfPattern;
}
public function __invoke(mixed $value): ?ValidationError
{
$numberOfCharacters = iconv_strlen($value);
for($i = 0; $i < $numberOfCharacters; $i++) {
$letter = mb_substr($value, $i, 1);
$result = preg_match($this->pattern, $letter);
if (!$result) {
if ($letter === " ") {
$invalidSymbols [] = "пробел";
} elseif ($letter === ",") {
$invalidSymbols [] = "запятая";
} else {
$invalidSymbols [] = $letter;
}
}
}
if ($invalidSymbols) {
$invalidSymbols = array_unique($invalidSymbols);
$invalidSymbols = implode(", ", $invalidSymbols);
$errorText = sprintf(
$this->format,
$this->verbalDescriptionOfPattern,
$invalidSymbols
);
return new ValidationError($errorText);
} else {
return null;
}
}
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 8.1.0 - 8.1.33 , 8.2.0 - 8.2.29 , 8.3.0 - 8.3.25 , 8.4.1 - 8.4.12 Fatal error: Uncaught Error: Interface "ValidatorRuleInterface" not found in /in/FgUuP:3
Stack trace:
#0 {main}
thrown in /in/FgUuP on line 3
Process exited with code 255 . preferences:dark mode live preview ace vim emacs key bindings
63.74 ms | 406 KiB | 5 Q