字符串中的PHP通配符

字符串中的PHP通配符,php,Php,我呼应了div的嵌入式风格。在这种风格中,我设置了背景图像。我知道图像文件名,但我不能确定文件类型,因为它可以是jpeg、jpg、gif或png 就像在这个例子中,它可能是png图像 if(file_exists("images/img_".$loggedInUser->user_id.".jpeg")){ echo "style='background-image: url(\"images/img_".$loggedInUser->user_id.".jpeg\");'";

我呼应了div的嵌入式风格。在这种风格中,我设置了背景图像。我知道图像文件名,但我不能确定文件类型,因为它可以是jpeg、jpg、gif或png

就像在这个例子中,它可能是png图像

if(file_exists("images/img_".$loggedInUser->user_id.".jpeg")){
  echo "style='background-image: url(\"images/img_".$loggedInUser->user_id.".jpeg\");'";
}

这里是否可以使用某种通配符进行扩展?

通配符可以与一起使用

例如:

$pics = glob("images/img_" . $loggedInUser->user_id . ".*");
if (isset($pics[0])) {
    // file exists
}
可能有用

另一种方法是使用kinda Manager

class Image {
    private $user;
    public function __construct($user) {
        $this->user = $user;
    }

    public function getPicture() {
        $path = glob("images/img_" . $this->user . ".*");
        if (isset($pics[0]) {
            return "style='background-image: url(" . $pics[0] . ");'";
        }
    }
}
用法:

$pic = new Image($loggedInUser->user_id);
echo $pic->getUserPicture();

如果多个文件与模式匹配,则将使用第一个文件:

if($file = glob("images/img_{$loggedInUser->user_id}.*")) {
    echo "style='background-image: url(\"{$file[0]}\");'";
}

如果您希望多个文件有不同的行为,请调整它。

如果只有4种可能性,为什么不使用
if-else
并列出所有4个选项?为什么不存储文件名?每次需要显示页面时就开始猜测似乎毫无意义。