What are the pros and cons between using urlendecode
+ urlencode
or str:slug
?
Beside the former using +
to join words with a space and the latter preferring -
, is it just a matter of taste when using them to output text for URLs? Is one more performant than the other?
Hm, the use case for both is completely different, I think. I use str::slug()
to create folder names from titles (e.g. when creating new pages programmatically), not the url encode and decode strings. There is no str::unslug()method to "undo" the
str::slug()` method.
So for multi word tags, you should use urlencode()
and urldecode()
.
So the preferred method would be
if(!empty(param('author'))) {
$tag_author = urldecode(param('author'));
$results = $results->filterBy('author', ($tag_author), ',');
}
instead of
if(!empty(param('author'))) {
$filter = str::slug(param('author'));
$results = $results->filter(function($result) use($author) {
$author = array_map('str::slug', $result->author()->split(','));
if(in_array($filter, $author)) return true;
});
}
?
Thank you for the answer. As I personally prefer to have spaces replaced by -
rather than +
, would there be a different way to achieve the same result but not using str:slug
?
I guess you can use str::slug()
, but then you need to unslug again, which could probably be achieved by using str_replace()