我有一个包含赞助商 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/