Add slugify method

This commit is contained in:
tal7aouy
2024-09-16 13:36:34 +01:00
parent 0d50d35b5e
commit e3bfcbe5f1
2 changed files with 28 additions and 2 deletions

View File

@ -1159,4 +1159,21 @@ final class Expectation
return $this;
}
/**
* Asserts that the value can be converted to a slug
*
* @return self<TValue>
*/
public function toBeSlug(string $message = ''): self
{
if ($message === '') {
$message = "Failed asserting that {$this->value} can be converted to a slug.";
}
$slug = Str::slugify((string) $this->value);
Assert::assertNotEmpty($slug, $message);
return $this;
}
}

View File

@ -116,4 +116,13 @@ final class Str
{
return (bool) filter_var($value, FILTER_VALIDATE_URL);
}
/**
* Converts the given `$target` to a URL-friendly "slug".
*/
public static function slugify(string $target): string
{
$target = preg_replace('/[^a-zA-Z0-9]+/', '-', $target);
return strtolower(trim($target, '-'));
}
}