PHP - 使$ _FILES文件名安全

时间:2014-07-30 13:17:19

标签: php arrays function json

我有一个包含“附件”字段的表单,允许用户添加多个附件。然后上传每个附件,但在此之前,使用以下功能使每个文件名安全。

function safeFile($file) {  

    $lower = strtolower($file);
    $trim = rtrim($lower, '.');
    $regex = array('#[^A-Za-z0-9\.\_\- ]#');

    return trim(preg_replace($regex, '', $trim));       
}

到目前为止一切顺利。

然后我将json编码存储在数据库中的文件名。使用以下内容:

json_decode($_FILES['attachment']['name']);

这将在数据库中输出以下内容:

["FILE.jpg", "OTHER.jpg"]

这是有效的,但是我也试图调用safeFile()函数,以便在插入数据库之前应用相同的操作,就像上传时一样。

我尝试使用以下无法正常工作的内容。

json_encode( safeFile($_FILES['add_attachment']['name']) );

为了解决这个问题,从逻辑上思考,我是否必须创建一个foreach循环,然后使每个单独的文件名安全,然后返回一个数组?

有人可以把我推向正确的方向吗?

1 个答案:

答案 0 :(得分:1)

你不需要foreach循环

你需要像这样使用array_map()

array_map("safeFile", $_FILES['add_attachment']['name']);

另外,我认为你需要使用的是json_encode()而不是json_decode