如何在阵列中搜索?

问题描述 投票:0回答:3

我有代码:

$acceptFormat = array(
  'jpg' => 'image/jpeg',
  'jpg' => 'image/jpg',
  'png' => 'image/png'
);

if ($ext != "jpg" && $ext != "jpeg" && $ext != "png") {
  throw new RuntimeException('Invalid file format.');
}

$mime = mime_content_type($_FILES['file']['tmp_name'][$i]);
if ($mime != "image/jpeg" && $mime != "image/jpg" && $mime != "image/png") {
   throw new RuntimeException('Invalid mime format.');
}

我有一个$acceptFormat数组,允许文件格式和两个ify:

  1. if ($ mime! = "Image / jpeg" && $ mime! = "Image / jpg" && $ mime! = "Image / png")
  2. if ($ ext! = "Jpg" && $ ext! = "Jpeg" && $ ext! = "Png")

如果要检查基于acceptFormat数组的扩展和mime类型,是否有可能以某种方式修改它?

php arrays
3个回答
1
投票

尝试使用in_array()array_keys()进行文件扩展,使用array_values()进行mime值。让我们来看看,

<?php

$acceptFormat = array(
  'jpg' => 'image/jpeg',
  'jpg' => 'image/jpg',
  'png' => 'image/png'
);

$ext ='jpg'; // demo value

if (!in_array($ext,array_keys($acceptFormat))) {
  throw new RuntimeException('Invalid file format.');
}

$mime = 'video/mkv'; // demo value

if (!in_array($mime,array_values($acceptFormat))) {
   throw new RuntimeException('Invalid mime format.');
}
?>

但是:ぁzxswい


0
投票
https://3v4l.org/aNdMM

你需要$filename = "path.ext"; $acceptFormat = array( 'jpeg' => 'image/jpeg', 'jpg' => 'image/jpg', 'png' => 'image/png' ); $ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION)); if(! array_key_exists($ext, $acceptFormat)) throw new RuntimeException('Invalid file format.'); $mime = mime_content_type($_FILES['file']['tmp_name'][$i]); if(! in_array($mime, $acceptFormat)) throw new RuntimeException('Invalid mime format.'); 来搜索键。当然,你需要array_key_exists来获取扩展名。

接下来,您需要pathinfo来搜索mime类型的值。


0
投票

这应该工作。

in_array
© www.soinside.com 2019 - 2024. All rights reserved.