首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Preg匹配$_FILES

Preg匹配$_FILES
EN

Stack Overflow用户
提问于 2016-03-02 14:32:07
回答 2查看 44关注 0票数 0

我想从$_FILES捕获扫描,因为总是会传递一个空的扫描输入名,而其他的变量可能会改变,我需要得到$_FILES的名称和数字。你有什么建议如何做到这一点吗?

代码语言:javascript
复制
// Skipping the empty scan, and getting the 0-100 possible
$results = preg_grep('/^scan\d{1,2}$/', $_FILES);

生成数组到字符串转换错误

邮政转储

代码语言:javascript
复制
["scan0"]=>
  array(5) {
    ["name"]=>
    string(6) "2.jpeg"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(24) "C:\xampp\tmp\phpD7B4.tmp"
    ["error"]=>
    int(0)
    ["size"]=>
    int(24618)
  }
  ["scan1"]=>
  array(5) {
    ["name"]=>
    string(6) "2.jpeg"
    ["type"]=>
    string(10) "image/jpeg"
    ["tmp_name"]=>
    string(24) "C:\xampp\tmp\phpD7B5.tmp"
    ["error"]=>
    int(0)
    ["size"]=>
    int(24618)
  }
  ["scan"]=>
  array(5) {
    ["name"]=>
    string(0) ""
    ["type"]=>
    string(0) ""
    ["tmp_name"]=>
    string(0) ""
    ["error"]=>
    int(4)
    ["size"]=>
    int(0)
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-02 15:09:39

代码语言:javascript
复制
$scankeys = [];

foreach($scans as $key => $scan)
{
  if(preg_match("/^scan[0-9]{1,2}$/", $key)){
    $scankeys[] = $key;
  }
}

我应该指出,这比尝试组合多个数组操作函数以获得相同的结果要好。

票数 1
EN

Stack Overflow用户

发布于 2016-03-02 14:44:14

请注意,带有标志的array_filter只适用于PHPVersionPHP5.6

代码语言:javascript
复制
$scans = array_filter($_FILES, function ($key, $scan) {
    return $key != 'otherscan' && !empty($scan['name']);
}, ARRAY_FILTER_USE_BOTH);

$names = array_combine(
    array_keys($scans),
    array_map(function ($scan) {
        return $scan['size'];
    }, $scans)
);

var_dump($names);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35750086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档