php - 使用逗号分隔的字符串在 if else 中创建 or 语句?
问题描述
目前,我有这段代码可以正常工作。
if ($ext == 'jpg' or $ext == 'gif' or $ext == 'png' or $ext == 'jpeg' or $ext == 'eps' or $ext == 'pdf') {
// Extension found execute the rest.
} else {
// Extension not found show a warning or something.
}
但这就是我所说的硬编码,我希望最终用户能够在此代码所属的组件的设置中更改它。在这些设置中,我可以很容易地创建一个输入,然后用户需要在逗号分隔的列表中填写他们想要的所有扩展名。
在这种情况下:jpg,gif,png,jpeg,eps,pdf
然后将检索这些设置,例如:$ext = $setting_extensions
显示字符串jpg,gif,png,jpeg,eps,pdf
但是如何在这个 if 语句中使用它呢?
我想我可以使用explode和foreach:
$tests = explode(",", $ext);
foreach($tests as $test) {
}
但是我如何在这个带有 or 的 if 语句中得到它?
解决方案
在语句的条件下使用 PHP 的in_array()
函数:if
$tests = explode(',', $extString);
if (in_array($ext, $tests))) {
// success
}
但我也会添加一些规范化,因此大写、间距等不会成为一个因素:
$tests = explode(',', $extString);
$tests = array_map(function($test) {
return strtolower(trim($test))
}, $tests);
if (in_array(strtolower($ext), $tests)) {
// success
}
推荐阅读
- python - “Python -m ipykernel install --user --name=myenv” 我想明白,为什么需要为 jupyter notebook 安装 ipykernel 需要这么多参数?
- javascript - 无法按类名获取元素:TypeError:无法读取未定义的属性“样式”
- reactjs - 设置后在 React 中未定义 useState()
- r - 使用 Loop 在一列中更改 R 中的单元格值
- python - FastAPI - 在`async`路径操作中直接访问`UploadFile`的`file`成员
- angular - 使用 nginx 托管两个 Angular 项目时获得 404,一个是父文件夹,另一个是子文件夹
- quarkus - 如何将配置中的集合转换为 Microprofile/Quarkus/Smallrye 中的环境变量
- notepad++ - Notepad++ - 查找和移动行
- node.js - 无法在 Ubuntu 18.04 Bionic 上安装/删除 mongodb-org - “mongodb-org-tools:取决于:mongodb-database-tools 但未安装”
- python - 使用新数据点更新 matplotlib 而不快速删除以前的数据点