用户头像保存在../wordpress/wp-content/uploads/
文件夹中,其名称和扩展名为输入。也就是说,如果上传了PNG文件,则扩展名将变为user_avatar0.png
,否则如果上传JPG,则会变为user_avatar0.jpg
。
我正在为每个循环加载多个用户头像。
这是我用来加载头像文件的代码:
$path="../wordpress/wp-content/uploads/";
$av=$path."user_avatar0.png|.jpg"; // if jpg exists loads jpg otherwise load png
<img src="'. $av .'" height="200" width="200" border="0" >
如何从目录中选择包含不同扩展名(jpg,png等)文件的文件?
答案 0 :(得分:1)
遗憾的是,您使用聪明的.png|.jpg
尝试的内容不是已知的语法。它不会被PHP或解析HTML的浏览器解释。 PHP没有以shell参数扩展 ? 的方式自动填充路径变量的功能。当然有glob()
,但在整个目录中使用jpg / png扩展来获取单个文件会非常低效。
如果你没有文件扩展名的记录(你可以查询你的WP数据库吗?),你只需要检查这样的东西,假设jpg / png是唯一的可能性:
$file = 'user_avatar0.';
$file .= file_exists($file.'jpg') ? 'jpg' : 'png';
如果匹配,则将基本名称与jpg
扩展名连接起来,如果没有,则返回png
。如果用户根本没有头像,那么您应该改为if-elseif-else
,如果两个file_exists
检查都失败,则默认为标准占位符。您还可以使用realpath()
,is_file()
或stream_resolve_include_path()
来验证文件是否存在;但逻辑仍然是一样的。谣言最后一个选项是最快的,但无论如何,每个选项都会缓解其结果。
无论如何,如果你继续显示相同的用户&#39;对于重复出现的页面加载的头像,您需要考虑将这些检查的结果保存到$_SESSION
数组中,以消除重复和冗余检查。我将把它留给你来测试PHP的文件缓存与会话缓存的对比。