Php 从字符串中删除空白和特殊字符

Php 从字符串中删除空白和特殊字符,php,Php,我用这段代码来保存上传的文件,但问题是它允许文件名带有特殊字符和空格。 例如,它允许 hi how are you 但我不想允许任何空间,特殊字符等。这是我的代码。我尝试在uri中使用preg_replace,但之后我尝试上传文件,但没有上传任何内容 function save_file($file) { $allowed_ext = array('jpg','png','gif','jpeg'); $ext = $file['name']; $ext = strtol

我用这段代码来保存上传的文件,但问题是它允许文件名带有特殊字符和空格。 例如,它允许

hi how are you
但我不想允许任何空间,特殊字符等。这是我的代码。我尝试在uri中使用preg_replace,但之后我尝试上传文件,但没有上传任何内容

function save_file($file) {
    $allowed_ext = array('jpg','png','gif','jpeg');
    $ext = $file['name'];
    $ext = strtolower($ext);

    if (in_array($ext, $allowed_ext)) {
        die('Sorry, the file type is incorrect:'.$file['name']);
    }

    $fname = date("H_i",time()).'_'.get_rand(5);
    $dir = date("Ym",time());
    $folder = 'uploads/userfiles/'.$dir;
    $uri = $folder.'/'.$fname.'.'.$ext;

    if (!is_dir($folder))
        mkdir($folder, 0777);

    if (copy($file['tmp_name'],$uri))
        return $uri;
    else {
        return false;
    }
}

要从字符串中去掉非字母,可以使用以下正则表达式

$input = preg_replace("/[^a-zA-Z]+/", "", $input);

可能的重复请尝试清楚地缩进代码,并避免使用没有括号的if语句。简化我们的操作,您将获得更高的代码质量。另请参阅并扩展表达式以允许大写字符<代码>/[^a-z]/i你能告诉我代码在哪里吗。我试过了,但没用。请告诉我在哪里code@raju这一行是不言自明的。努力。我试过了,但没有上传任何内容$uri=$folder.'/'.$fname.'$ext$uri=preg_replace(“/[^a-zA-Z]+/”,“,$uri”);有几个依赖于$uri,所以我没有在下一行更改名称,因为php将从上到下执行,这也将删除数字。数字不是空白或特殊字符。要允许使用数字,您可以使用-$input=preg_replace(“/[^a-zA-Z0-9]+/”,“,$input”)对其进行更新;