Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP glob() regex pattern

Tags:

regex

php

glob

I have a folder that contains logos for sponsors. In my website, a user can belong to a sponsor and the sponsor_id is set in session when the user logs in.

Here is my code:

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

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

The above works, but a sponsor can have multiple logos. So the multiple logos are saved like so: sponsor_id.jpg, sponsor_id_2.jpg, sponsor_id_3.jpg

I am not the strongest at regex, so any help is greatly appreciated! thanks!

like image 216
dennismonsewicz Avatar asked Sep 22 '26 04:09

dennismonsewicz


1 Answers

You better open directory and check all files in it (if there are not so much files). You could do it like that:

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

But best solution is to have normal naming scheme.

like image 183
Oroboros102 Avatar answered Sep 23 '26 19:09

Oroboros102