Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.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-使$\u文件名安全_Php_Arrays_Function_Json - Fatal编程技术网

PHP-使$\u文件名安全

PHP-使$\u文件名安全,php,arrays,function,json,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));

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

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
循环,然后使每个文件名都安全,然后返回一个数组


有人能把我推到正确的方向吗?

你不需要foreach循环

你需要像这样使用

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

另外,我认为您需要使用的不是json_decode

Try
(“安全文件”、$_文件['add_attachment']['name'])虽然数组映射很好,但问题中提出的foreach可以很好地工作,所以我想知道为什么您在提问之前没有尝试过?谢谢。我使用的是json_encode,但我在键入时出错了。