3

スポンサーのロゴを含むフォルダーがあります。私のWebサイトでは、ユーザーはスポンサーに属することができ、ユーザーがログインすると、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

私は正規表現が得意ではないので、どんな助けでも大歓迎です!ありがとう!

4

2 に答える 2

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

しかし、最善の解決策は、通常の命名スキームを使用することです。

于 2012-07-04T14:12:54.247 に答える
0

この正規表現を使用するsponsor_id(_\d+)?\.jpg

于 2012-07-04T13:29:57.957 に答える