PHP glob() 正则表达式模式

标签 php regex glob

我有一个包含赞助商 Logo 的文件夹。在我的网站中,用户可以属于赞助商,并且在用户登录时会在 session 中设置 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}' />";
    }
}

上述方法有效,但赞助商可以有多个 Logo 。所以多个标志是这样保存的:sponsor_id.jpg, sponsor_id_2.jpg, sponsor_id_3.jpg

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

最佳答案

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

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 . "' />";
    }
}

但最好的解决方案是使用正常的命名方案。

关于PHP glob() 正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11330001/

相关文章:

php - 检查 php 目录是否包含不同的文件类型

autocomplete - zsh 文件名通配/替换

PHP:更清晰的分页 url(文件夹)

关键字的正则表达式

linux模式匹配程序输入

regex - Google Analytics - 根据查询参数对 URL 进行分组

javascript - 正则表达式需要将字符串拆分为 "."

php - 查询HABTM相关Model的join表

php - 使用 PHP 将 <a> 标记替换为 <b> 标记

javascript - 事件菜单样式的动态主体类