我有一个包含赞助商徽标的文件夹。在我的网站中,用户可以属于赞助商,并且在用户登录时会在会话中设置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
我不是正则表达式中最强的,所以非常感谢任何帮助!谢谢!
答案 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