[12.x] Add Str::isSlug() and Stringable::isSlug() helper #57375
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR adds a new helper to determine whether a given string is a valid, URL-friendly slug.
Motivation
Laravel already offers
Str::slug()
to generate slugs, but there is no built-in way to validate them. This helper:Implementation
New methods:
Illuminate\Support\Str::isSlug(string $value): bool
Illuminate\Support\Stringable::isSlug(): bool
Validation rule (ASCII lowercase, digits, single hyphens, no leading/trailing hyphen, no double hyphens):
^[a-z0-9]+(?:-[a-z0-9]+)*$
Examples
Tests
Added assertions in
tests/Support/SupportStrTest.php
:Examples
Backwards Compatibility
Str::is*()
helpersExample Usage in Validation
Notes
Str::slug()
with-
as the separator.