字符串中的PHP通配符

时间:2014-04-28 15:29:20

标签: 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\");'";
}

是否可以在此处使用某种通配符进行扩展?

2 个答案:

答案 0 :(得分:0)

通配符可以与glob()一起使用。

示例:

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

fnmatch()可能很有用。

替代方式,使用有点经理class

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();

答案 1 :(得分:0)

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

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

如果您想要多个文件的不同行为,请调整它。