2011
04.28
04.28
For a project I was working on I was in desperate need for a tool to generate slugs. Of course there are like million functions that can do that. We have the Mootools function String.Slugify, we have cakePHP’s function Inflector::slug et cetera. But there are no commandline or online tools that use these functions. So I created them! The commandline version is write in PHP and looks like this:
< ?php
setlocale(LC_ALL, 'en_US.UTF8');
if ($argc < 2)
{
echo $argv[0]." <to slug text>\n";
exit(1);
}
$words = $argv;
array_shift($words);
echo "\n";
echo toAscii(implode(' ', $words));
echo "\n\n";
function toAscii($str, $replace = array(), $delimiter = '-')
{
if( !empty($replace) )
{
$str = str_replace((array)$replace, ' ', $str);
}
$clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
$clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
$clean = strtolower(trim($clean, '-'));
$clean = preg_replace("/[\/_|+ -]+/", $delimiter, $clean);
return $clean;
}
?>
And this is how you use it:
php slugify.php A string to slugify # ouput a-string-to-slugify
non PHP version, but this way I could also use it online. And that’s what I did. Slugify, my online slug generator uses the same function.
References:
Your Coding of Slug Generator will Surely help to the CakePHP Developer Who are looking for it?
Hi,
I actually use your tool on a weekly basis. Could you improve it by slugifying Danish letters like this:
Ø -> oe
ø -> oe
Å -> aa
å -> aa
Thanks 🙂
Can you make a version that supports multiple lines? I have text strings (thousands of them) that need to be converted to slug case and I have to do it line by line.
Why not run in in a loop?
http://stackoverflow.com/a/1521498/138779