umityatarkalkmaz / string-helper
Turns arbitrary text into a lowercase, URL-safe slug
Package info
github.com/umityatarkalkmaz/phpStringHelper
pkg:composer/umityatarkalkmaz/string-helper
Requires
- php: >=8.2
- ext-mbstring: *
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5 || ^12.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Turns arbitrary text into a lowercase, URL-safe slug. Turkish and common Latin
letters are transliterated rather than dropped, so Şeker Ağacı becomes
seker-agaci instead of ekeraac.
Requirements
PHP 8.2 or newer, with ext-mbstring.
Installation
composer require umityatarkalkmaz/string-helper
Usage
use UmitYatarkalkmaz\StringHelper; StringHelper::cleanString('Şeker Ağacı #1'); // 'seker-agaci-1' StringHelper::cleanString('hello world'); // 'hello-world' StringHelper::cleanString('-Special #@$-'); // 'special' StringHelper::cleanString('日本語'); // ''
cleanString(string $str): string transliterates known letters, lowercases the
result, and collapses every run of unsupported characters into a single hyphen.
Leading and trailing hyphens are trimmed. Input with no usable characters
returns an empty string, so check the result before using it in a URL:
$slug = StringHelper::cleanString($title); if ($slug === '') { $slug = 'untitled'; }
The output is always safe to place in a URL path segment and is idempotent — running it over its own output returns the same string.
Filenames
cleanString() removes dots, so it must not be applied to a whole filename.
Split the extension off first:
$name = pathinfo($original, PATHINFO_FILENAME); $ext = pathinfo($original, PATHINFO_EXTENSION); $safe = StringHelper::cleanString($name) . '.' . strtolower($ext);
Development
composer install
composer check # phpstan (level max) + phpunit
License
MIT. See LICENSE.