首页 > 解决方案 > 使用逗号分隔的字符串在 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

解决方案


在语句的条件下使用 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
}

推荐阅读