[Catalyst] create search engine friendly uri from string
Brad Bowman
list at bereft.net
Mon Jan 19 09:42:44 GMT 2009
Robin Berjon wrote:
> On Dec 15, 2008, at 21:53 , Johannes Plunien wrote:
>> My not very elegant, but working solution:
>>
>> my $str = " Beta Launch Invites: Kwyno Brings The Web Into Your IM
>> And (Soon) SMS Inboxes ";
>> $str =~ s/^\s+|\s+$//g;
>> $str =~ s/\W/ /g;
>> $str =~ s/\s{1,}/ /g;
>> $str =~ s/\s/-/g;
>> $str = lc($str);
>>
>> print "$str\n";
>
> A wee bit shorter:
>
> my $str = " Beta Launch Invites: Kwyno Brings The Web Into Your IM And
> (Soon) SMS Inboxes ";
> $str =~ s/^\s+|\s+$//g;
> $str =~ s/\W+/-/g;
> $str = lc($str);
>
> print "$str\n";
>
> Before putting that into a module though you might want to think about
> what should happen to characters outside the [a-z0-9] range as \W will
> match differently based on locale. I'm not sure what the recommended
> behaviour is for such cases.
>
>
Here's some code I use for renaming strange files, there might
be something useful there (or not, given I'm decades behind on
this list)
use strict;
use Convert::Translit;
my $trans = Convert::Translit->new('Latin1' => 'ascii');
sub clean {
local($_) = shift;
$_ = $trans->transliterate($_);
$_=lc;
s/&/ and /g;
s/\+/ plus /g;
s/'//g;
y/()~/---/s;
# . || - || _ for the rest
s/(?:(-)|(\.)|[\W_])+/$+||'_'/ge;
s/^[._-]//;
s/[._-]$//;
return $_;
}
--
To treat a person harshly is the way of middle-classed lackeys.
-- Hagakure http://bereft.net/hagakure/
More information about the Catalyst
mailing list