Skip to content

Instantly share code, notes, and snippets.

@james2doyle
Last active January 12, 2022 13:19
Show Gist options
  • Select an option

  • Save james2doyle/9158349 to your computer and use it in GitHub Desktop.

Select an option

Save james2doyle/9158349 to your computer and use it in GitHub Desktop.
Simple slugify function for PHP. Creates a slug for the passed string, taking into account international characters as well.
<?php
function slugify($string, $replace = array(), $delimiter = '-') {
// https://github.com/phalcon/incubator/blob/master/Library/Phalcon/Utils/Slug.php
if (!extension_loaded('iconv')) {
throw new Exception('iconv module not loaded');
}
// Save the old locale and set the new locale to UTF-8
$oldLocale = setlocale(LC_ALL, '0');
setlocale(LC_ALL, 'en_US.UTF-8');
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $string);
if (!empty($replace)) {
$clean = str_replace((array) $replace, ' ', $clean);
}
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower($clean);
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
$clean = trim($clean, $delimiter);
// Revert back to the old locale
setlocale(LC_ALL, $oldLocale);
return $clean;
}
@rachitpatel83
Copy link
Copy Markdown

જુઓ, અત્યાર સુધી કેવી જામી નોરતાની રમઝટ

@ausi
Copy link
Copy Markdown

ausi commented Oct 30, 2017

I created ausi/slug-generator that can handle more advanced characters too, e.g.:

$generator = new Ausi\SlugGenerator\SlugGenerator;
$generator->generate('જુઓ, અત્યાર સુધી કેવી જામી નોરતાની રમઝટ', ['locale' => 'gu']);
// output: ja-o-atayara-sadhi-kavi-jami-noratani-ramajhata

@controlnocontrol
Copy link
Copy Markdown

The following error is being thrown when there are apostrophes (’) in the string.

iconv(): Detected an illegal character in input string

Is there a solution to this?

@jrtderonde
Copy link
Copy Markdown

જુઓ, અત્યાર સુધી કેવી જામી નોરતાની રમઝટ

Finally I found someone with the exact same question

@jenstornell
Copy link
Copy Markdown

MIT license?

@james2doyle
Copy link
Copy Markdown
Author

james2doyle commented Jun 22, 2019 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment