Загружать файлы на сервер с понятными PHP-именами - PullRequest
0 голосов
/ 21 января 2012

Я пытаюсь загрузить файлы на сервер, используя Сценарий загрузки , а затем показать их с помощью PHP на веб-сайте в виде "www.example.com/directory-of-upload/file. mp3" .

Работает нормально, пока я не загружаю файлы, содержащие такие символы, как запятые, кавычки и т. Д. Затем код php ломается.

Например, когда я пытаюсь проанализировать URL-адрес файла в качестве параметра во флеш-плеере, он выглядит так:

<param name="flashvars" value="soundFile=http://localhost/public_html/content/plugins/post_audio/uploadi‌​fy-local/uploads/song,+one.dad'a;-A.b!@.mp3&amp;titles=song,+one.dad'a;-A.b!@&amp;playerID=audioplayer_song,+one.dad'a;-A.b!@">

и файл не воспроизводится. Я думаю, это как-то связано с этими персонажами (запятые, кавычки ..)

Как мне решить эту проблему? Является ли reg ex единственным решением?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 21 января 2012
$fArr=explode('.',$_FILES['fname']['name']);
$fname=clean(implode('',array_slice($fArr,0,-1,false)));
$ex=clean(implode('',array_slice($fArr,-1,1)));
$file_name=$fname.".".$ex;

function clean($str) {
    $strArr=array();
    $strArr=explode(' ',$str);
    foreach ($strArr as $key=>$val) {
        if (strlen($strArr[$key])==0) {
        unset($strArr[$key]);
        }
    }
    $strArr=array_map('strtolower',$strArr);
    $str=implode(' ',$strArr);
    $str=preg_replace("/\W+/i","",$str);

    return $str;
}
0 голосов
/ 21 января 2012

Вы можете использовать preg replace для удаления символов, которые вам не нужны, вы, вероятно, хотите что-то вроде этого http://www.phpbuilder.com/board/showthread.php?t=10291707

...