diff --git a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php index cc9985e631c6..a8f3b11a1126 100644 --- a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php +++ b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php @@ -142,6 +142,18 @@ protected function getDnsRecords($hostname, $type) return dns_get_record($hostname, $type); } + /** + * Validate that an attribute is 7 bit ASCII. + * + * @param string $attribute + * @param mixed $value + * @return bool + */ + public function validateAscii($attribute, $value) + { + return Str::isAscii($value); + } + /** * "Break" on first validation fail. * @@ -2139,6 +2151,18 @@ public function validateUrl($attribute, $value) return preg_match($pattern, $value) > 0; } + /** + * Validate that an attribute is a valid ULID. + * + * @param string $attribute + * @param mixed $value + * @return bool + */ + public function validateUlid($attribute, $value) + { + return Str::isUlid($value); + } + /** * Validate that an attribute is a valid UUID. * diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index d1b82afe7e17..f73b8865ab0b 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -6726,6 +6726,34 @@ public static function invalidUuidList() ]; } + public function testValidateWithValidAscii() + { + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, ['foo' => 'Dusseldorf'], ['foo' => 'ascii']); + $this->assertTrue($v->passes()); + } + + public function testValidateWithInvalidAscii() + { + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, ['foo' => 'Düsseldorf'], ['foo' => 'ascii']); + $this->assertFalse($v->passes()); + } + + public function testValidateWithValidUlid() + { + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, ['foo' => '01gd6r360bp37zj17nxb55yv40'], ['foo' => 'ulid']); + $this->assertTrue($v->passes()); + } + + public function testValidateWithInvalidUlid() + { + $trans = $this->getIlluminateArrayTranslator(); + $v = new Validator($trans, ['foo' => '01gd6r36-bp37z-17nx-55yv40'], ['foo' => 'ulid']); + $this->assertFalse($v->passes()); + } + public static function providesPassingExcludeIfData() { return [