PHP glob()正则表达式模式

时间:2012-07-04 13:24:20

标签: php regex glob

我有一个包含赞助商徽标的文件夹。在我的网站中,用户可以属于赞助商,并且在用户登录时会在会话中设置sponsor_id。

这是我的代码:

function sponsor_logos($sponsor_id) {
    $logos = glob("resources/content/sites/{$sponsor_id}*");

    foreach($logos as $logo) {
        if(file_exists("{$logo}"))
            echo "<img src='/{$logo}' />";
    }
}

以上作品,但赞助商可以有多个徽标。所以多个徽标保存如下:sponsor_id.jpg,sponsor_id_2.jpg,sponsor_id_3.jpg

我不是正则表达式中最强的,所以非常感谢任何帮助!谢谢!

2 个答案:

答案 0 :(得分:1)

您最好打开目录并检查其中的所有文件(如果没有那么多文件)。你可以这样做:

function sponsor_logos($sponsor_id) {
    if ($dh = opendir('resources/content/sites/')) {
        while (($file = readdir($dh)) !== false) {
            if(strpos($file, $sponsor_id . '.') === 0) {
                $sponsor_files[] = $file;
            }
            else if(strpos($file, $sponsor_id . '_') === 0) {
                $sponsor_files[] = $file;
            }
        }
        closedir($dh);
    }
    foreach($sponsor_files as $logo) {
        echo "<img src='resources/content/sites/" . $logo . "' />";
    }
}

但最好的解决方案是拥有正常的命名方案。

答案 1 :(得分:0)

使用此正则表达式sponsor_id(_\d+)?\.jpg