Search by

umityatarkalkmaz / string-helper

umityatarkalkmaz

Turns arbitrary text into a lowercase, URL-safe slug

Package info

github.com/umityatarkalkmaz/phpStringHelper

pkg:composer/umityatarkalkmaz/string-helper

Statistics

Installs: 11

Dependents: 2

Suggesters: 0

Stars: 1

Open Issues: 0

v2.0.0 2026-09-02 12:10 UTC

This package is auto-updated.

Last update: 2026-09-02 17:31:30 UTC


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.