ldc-legaulois/app/Rules/IsValidYoutubeId.php
2026-09-25 16:25:31 +02:00

39 lines
1 KiB
PHP

<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Support\Str;
/**
* Validate a youtube ID regex
*
* @url https://webapps.stackexchange.com/questions/54443/format-for-id-of-youtube-video
*/
class IsValidYoutubeId implements ValidationRule
{
/**
* Run the validation rule.
*
* @param \Closure(string):\Illuminate\Translation\PotentiallyTranslatedString $fail
*
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInImplementedInterfaceBeforeLastUsed
*
* @phpcs:disable Squiz.Commenting.FunctionComment.IncorrectTypeHint
*/
public function validate(string $attribute, mixed $value, \Closure $fail): void
{
// phpcs:enable
if (! self::validates($value)) {
$fail(trans('validation.youtube_id'));
}
}
/**
* Validate a value.
*/
public static function validates(mixed $value): bool
{
return Str::of($value)->isMatch('/^[0-9A-Za-z_-]{10}[048AEIMQUYcgkosw]$/');
}
}