Looks like a good approach, I dealt with something similar while I was trying to make some URL-escaping for LinksSQL.
I ended up with:
my $return = shift;
$return =~ tr/ÄÖÜÏËÈÒÙÌÀÉÓÍÁÝÊÔÛÎÂÇÑÕÃÅÆ/äöüïëèòùìàéúíáýêôûîâçñõãåæ/;
$return = lc($return);
return $return;
}
my $return = shift;
my %umlaute = (
"ä" => "ae",
"Ä" => "Ae",
"ü" => "ue",
"Ü" => "Ue",
"ö" => "oe",
"Ö" => "Oe",
"ß" => "ss",
"À" => "a",
"à" => "a",
"Á" => "a",
"á" => "a",
"Â" => "a",
"â" => "a",
"Æ" => "a",
"æ" => "a",
"Ç" => "c",
"ç" => "c",
"È" => "e",
"è" => "e",
"É" => "e",
"é" => "e",
"Ê" => "e",
"ê" => "e",
"Ë" => "e",
"ë" => "e",
"Î" => "i",
"î" => "i",
"Ï" => "i",
"ï" => "i",
"Ô" => "o",
"ô" => "o",
"Œ" => "oe",
"œ" => "oe",
"Ù" => "u",
"ù" => "u",
"Û" => "u",
"û" => "u",
"Ÿ" => "y",
"ÿ" => "y",
);
my $umlautkeys = join ("|", keys(%umlaute));
$return =~ s/($umlautkeys)/$umlaute{$1}/g;
$return =~ s///\//g;
$return =~ s/'|#|\||\s|\t|\r|\n|\/|;|"|&/-/g;
while (substr($return,0,1) eq "-") {
substr($return, 0, 1) = "";
}
while (substr($return,-1,1) eq "-") {
chop($return);
}
$return = lc($return);
$return =~ s/([^\w\-.:,!~*'()])/sprintf("%%%02X",ord($1))/eg;
$return =~ s/-{1,}/-/g;
return $return;
}
Maybe some inspiration for you.
Regards
n||i||k||o
I ended up with:
Code:
sub superlc { my $return = shift;
$return =~ tr/ÄÖÜÏËÈÒÙÌÀÉÓÍÁÝÊÔÛÎÂÇÑÕÃÅÆ/äöüïëèòùìàéúíáýêôûîâçñõãåæ/;
$return = lc($return);
return $return;
}
Code:
sub URL_escape { my $return = shift;
my %umlaute = (
"ä" => "ae",
"Ä" => "Ae",
"ü" => "ue",
"Ü" => "Ue",
"ö" => "oe",
"Ö" => "Oe",
"ß" => "ss",
"À" => "a",
"à" => "a",
"Á" => "a",
"á" => "a",
"Â" => "a",
"â" => "a",
"Æ" => "a",
"æ" => "a",
"Ç" => "c",
"ç" => "c",
"È" => "e",
"è" => "e",
"É" => "e",
"é" => "e",
"Ê" => "e",
"ê" => "e",
"Ë" => "e",
"ë" => "e",
"Î" => "i",
"î" => "i",
"Ï" => "i",
"ï" => "i",
"Ô" => "o",
"ô" => "o",
"Œ" => "oe",
"œ" => "oe",
"Ù" => "u",
"ù" => "u",
"Û" => "u",
"û" => "u",
"Ÿ" => "y",
"ÿ" => "y",
);
my $umlautkeys = join ("|", keys(%umlaute));
$return =~ s/($umlautkeys)/$umlaute{$1}/g;
$return =~ s///\//g;
$return =~ s/'|#|\||\s|\t|\r|\n|\/|;|"|&/-/g;
while (substr($return,0,1) eq "-") {
substr($return, 0, 1) = "";
}
while (substr($return,-1,1) eq "-") {
chop($return);
}
$return = lc($return);
$return =~ s/([^\w\-.:,!~*'()])/sprintf("%%%02X",ord($1))/eg;
$return =~ s/-{1,}/-/g;
return $return;
}
Maybe some inspiration for you.
Regards
n||i||k||o