bestandsnaam bij uploaden NIET hernoemen
ik werk voor mijn website met het CMS script van Syndeo.
Hierin zit ook een module om bestanden te uploaden naar de website. Alleen het script hernoemt het bestand (bijv. een *.doc) bij het opslaan in de SQL database, door de spaties te vervangen door een underscore ( _ ).
Dat wil ik niet want hierdoor lukt het me niet bijv. *.doc bestanden te openen die een spatie bevatten. Nu kan ik natuurlijk al mijn document namen vervangen zodat het script er mee overweg kan. Maar kan dit ook anders?
Ik heb in het script nu de volgende code gevonden;
function remove_special_characters($string)
{
# Remove spaces, apostrophe, exclamation marks and replace them with underscore
$string = preg_replace("/[^a-zA-Z0-9-.]/", "_", $string);
$string = normalize($string);
return $string ;
} // end of the 'remove_special_characters()' function
function normalize ($string)
{
# Replace 'special' characters with their counter part.
$table = array(
'ä'=>'S', 'ö'=>'s', 'é'=>'Z', 'û'=>'z', 'C'=>'C', 'c'=>'c', 'C'=>'C', 'c'=>'c',
'¿'=>'A', '¡'=>'A', '¬'=>'A', '√'=>'A', 'ƒ'=>'A', '≈'=>'A', '∆'=>'A', '«'=>'C', '»'=>'E', '…'=>'E',
' '=>'E', 'À'=>'E', 'Ã'=>'I', 'Õ'=>'I', 'Œ'=>'I', 'œ'=>'I', '—'=>'N', '“'=>'O', '”'=>'O', '‘'=>'O',
'’'=>'O', '÷'=>'O', 'ÿ'=>'O', 'Ÿ'=>'U', '⁄'=>'U', '€'=>'U', '‹'=>'U', '›'=>'Y', 'fi'=>'B', 'fl'=>'Ss',
'‡'=>'a', '·'=>'a', '‚'=>'a', '„'=>'a', '‰'=>'a', 'Â'=>'a', 'Ê'=>'a', 'Á'=>'c', 'Ë'=>'e', 'È'=>'e',
'Í'=>'e', 'Î'=>'e', 'Ï'=>'i', 'Ì'=>'i', 'Ó'=>'i', 'Ô'=>'i', ''=>'o', 'Ò'=>'n', 'Ú'=>'o', 'Û'=>'o',
'Ù'=>'o', 'ı'=>'o', 'ˆ'=>'o', '¯'=>'o', '˘'=>'u', '˙'=>'u', '˚'=>'u', '˝'=>'y', '˝'=>'y', '˛'=>'b',
'ˇ'=>'y', 'R'=>'R', 'r'=>'r',
);
return strtr($string, $table);
}
is dit de boosdoener? En zo ja hoe kan ik deze code veranderen zodat hij de spaties niet langer vervangt door underscore?
Graag hulp.
BVD
HJ
AANVULLING:
ik kan ge-uploade bestanden met een spatie in de bestandsnaam wel downloaden alleen krijg ik dan een blanco document. ;-(
Gewijzigd op 22/10/2012 21:53:58 door HJ Zomer
ik doe het even uit mijn hoofd.
ik heb geprobeerd je line toe te voegen zodat de wijziging ongedaan werd gemaakt. Helaas werkte het niet.
Is de plaatsing van je line nog essentieel?
Heb het nu oa zo geprobeerd;
function remove_special_characters($string)
{
# Remove spaces, apostrophe, exclamation marks and replace them with underscore
$string = preg_replace("/[^a-zA-Z0-9-.]/", "_", $string);
$string = implode(' ', explode('_', $string));
$string = normalize($string);
return $string ;
} // end of the 'remove_special_characters()' function
Je zou toch denken dat hij de wijziging dan direct opheft?
Mvg, HJ
Toevoeging op 23/10/2012 00:31:43:
Thanks met behulp van een ander fora vond ik waar ik jou line moest plakken. Het werkt!
Dank
Code (php)
Toevoeging op 23/10/2012 01:24:07:
ohhhhhh okee het is dus toch gelukt :)