使用PHP友好名称将文件上载到服务器并解析它们

时间:2012-01-21 01:06:59

标签: php regex file-upload uploadify

我正在尝试使用Uploadify script将文件上传到服务器,然后使用PHP在网站上以“www.example.com/directory-of-upload/file.mp3”的形式显示它们。

它工作正常,直到我上传包含逗号,引号等字符的文件。然后php代码中断。

例如,当我尝试将文件URL解析为flash播放器中的参数时,它看起来像这样:

<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!@">

并且文件无法播放。我想这与这些角色有关(逗号,引号..)

我该如何解决这个问题?注册是唯一的解决方案吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

$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;
}

答案 1 :(得分:0)

您可以使用preg_replace删除您不想要的字符 ,你可能想要这样的东西http://www.phpbuilder.com/board/showthread.php?t=10291707