Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP友好的名称将文件上载到服务器并解析它们_Php_Regex_File Upload_Uploadify - Fatal编程技术网

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

使用PHP友好的名称将文件上载到服务器并解析它们,php,regex,file-upload,uploadify,Php,Regex,File Upload,Uploadify,我正在尝试使用PHP将文件上传到服务器,然后在网站上以“www.example.com/directory of upload/file.mp3”的形式显示它们 它工作正常,直到我上传包含逗号、引号等字符的文件。然后php代码中断 例如,当我尝试将文件URL解析为flash player中的一个参数时,它看起来是这样的: 而且文件无法播放。我猜这与这些字符(逗号、引号等)有关 我应该如何解决这个问题?reg ex是唯一的解决方案吗 提前感谢。您可以使用preg replace删除不需要的字符

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

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

例如,当我尝试将文件URL解析为flash player中的一个参数时,它看起来是这样的:



而且文件无法播放。我猜这与这些字符(逗号、引号等)有关

我应该如何解决这个问题?reg ex是唯一的解决方案吗


提前感谢。

您可以使用preg replace删除不需要的字符
,你可能想要这样的东西

“休息”怎么办?显示代码,显示错误,描述观察到的行为,等等。我不是100%确定(我做这件事已经有一段时间了,我现在还没有一个方便的方法来测试它),但我想它应该是UrlEncoded或HtmlEncoded或类似的东西。()如果您没有正确编码,您的应用程序可能会受到SQL注入或XSS攻击。例如,Wordpress使用此方法从无效字符中清除上载的文件:
preg\u replace('/\.[^.]+$/','',basename($file))
$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;
}