
PHP rawurlencode() og problemer med enkelte tegn
august 24, 2009Har laget meg et enkelt opplastingsskript for filer og kom da over et problem med rawurlencode().
Slet med å få rawurlencode() til å håndtere tegn som ( ) { } [ ] og whitespace riktig i filnavn. Skrev derfor følgende enkle funksjon for å strippe alle uønskede tegn fra filnavnet.
$removeChars = ‘ (){}[]~?/\\\’”=+<>:;,*%|’; // All unwanted characters
$file_name = stripTheFollowingFromString($file_name, $removeChars); // Remove them
$file_name = strtolower($file_name); // Lowercase everything
$file_name = rawurlencode($file_name);
/**
* Loops through all unwanted chars in string and removes them
*
* @param String $string The string.
* @param String $chars The unwanted characters.
*
* @return String The new string without the unwanted chars.
*/
function stripTheFollowingFromString($string, $chars){
// Split unwanted chars to array
$charArr = str_split($chars);
// Loop through each char in charArr and remove them from string
$newString = $string;
for($i = 0; $i < count($charArr); $i++) {
$removeThis = $charArr[$i];
$newString = str_replace($removeThis, “”, $newString);
}
return $newString;
}
Så hvis noen andre har samme problem, værsågod, en veldig simpel funksjon for å unngå det problemet!
Har også prøvd å utf8_encode() først, til ingen nytte. Synes forresten det er veldig rart at rawurlencode() ikke takler filnavn som feks “Mitt Bilde (1).jpg”, det blir fullstendig kluss med kombinasjonen whitespace + (. Kan være jeg som overser noe helt banalt, men denne lille fiksen løste problemet for meg hvertfall
Hurra! You solved it!
nerd:P
Hvis en som ikke kjenner deg går inn på bloggen din og ser dette innlegget øverst – ja, da kan jeg love deg at vedkommende forsvinner ganske fort igjen
Ja, det kommer noen sånne innlegg innimellom. Og de er kanskje ikke myntet på hvermansen nei
(det var også et hint om at du må skrive noe nytt snart!)