I made a slug with dash for my stories URLs such as:
Fetching records with slug instead of ID
This is my code to create slug :
function Slugit($title) {
$title = strip_tags($title);
// Preserve escaped octets.
$title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
// Remove percent signs that are not part of an octet.
$title = str_replace('%', '', $title);
// Restore octets.
$title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);
$title = remove_accents($title);
if (seems_utf8($title)) {
if (function_exists('mb_strtolower')) {
$title = mb_strtolower($title, 'UTF-8');
}
$title = utf8_uri_encode($title, 500);
}
$title = strtolower($title);
$title = preg_replace('/&.+?;/', '', $title); // kill entities
$title = str_replace('.', '-', $title);
$title = preg_replace('/[^%a-z0-9 _-]/', '', $title);
$title = preg_replace('/\s+/', '-', $title);
$title = preg_replace('|-+|', '-', $title);
$title = trim($title, '-');
return $title;
}
As you can see dashes, up to here, everything is fine. But when I click on the link, it can not open and find it my database as it's saved in normal and with no dashes.
So I wrote something to remove dashes:
$string = str_replace('-', ' ', $string);
But when there is ?
or .
in URL, then it can not display!
Any help to retrieve back the original URL?!
When you have an URL such as this one :
https://stackoverflow.com/questions/2647789/problem-in-displaying-a-slug-with-dash
The problem-in-displaying-a-slug-with-dash
part is not quite important : it's just nice :
What's really important, in that URL, is the 2647789
part : it's the identifier of the question in the database -- i.e. it's that part of the URL that's used to load the question.
This means there is no need to convert the slug to what was first typed by the user : only thing that matters is that you pass the identifier of your data in each URL, and use it to find your data back.
And, if you want some kind of proof : try going to Problem in displaying a URL slug with dash without the slug : you'll see that your question loads just fine ;-)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With