Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从路径中查找不同类型的文件_Php_Wordpress_File Upload_Avatar - Fatal编程技术网

Php 如何从路径中查找不同类型的文件

Php 如何从路径中查找不同类型的文件,php,wordpress,file-upload,avatar,Php,Wordpress,File Upload,Avatar,用户头像保存在。/wordpress/wp content/uploads/文件夹中,名称和扩展名与输入相同。也就是说,如果上载PNG文件,则扩展名变为user\u avatar0.PNG,否则如果上载JPG,则扩展名将变为user\u avatar0.JPG。 我正在为每个循环加载多个用户化身 这是我用来加载化身文件的代码: $path="../wordpress/wp-content/uploads/"; $av=$path."user_avatar0.png|.jpg"; // if jp

用户头像保存在
。/wordpress/wp content/uploads/
文件夹中,名称和扩展名与输入相同。也就是说,如果上载PNG文件,则扩展名变为
user\u avatar0.PNG
,否则如果上载JPG,则扩展名将变为
user\u 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" >
$path=“../wordpress/wp content/uploads/”;
$av=$path.“user_avatar0.png |.jpg”//如果jpg存在,则加载jpg,否则加载png

如何从包含不同扩展名(jpg、png等)的文件的目录中选择文件?

您使用Smart
.png |.jpg
所尝试的语法不幸不为人所知。它不会被PHP或解析HTML的浏览器解释。PHP没有以shell参数扩展的方式自动填充路径变量的功能。当然有,但是全局搜索整个目录以获得一个扩展名为jpg/png的文件是非常低效的

如果您没有文件扩展名的记录(您可以查询您的WP数据库?),您只需使用类似的方法进行检查,假定jpg/png是唯一的可能:

$file = 'user_avatar0.';
$file .= file_exists($file.'jpg') ? 'jpg' : 'png';
如果存在匹配项,则将basename与扩展名
jpg
连接,如果不匹配,则返回到
png
。如果用户可能根本没有头像,那么您应该改为执行
If elseif else
,如果
file\u都存在
检查失败,则默认为标准占位符。您还可以使用或验证文件是否存在;但逻辑仍然是一样的。谣传最后一个选项是最快的,但在任何情况下,每个选项都会缓存其结果


不管怎样,如果你在重复的页面加载中显示相同的用户化身,你会考虑把这些检查的结果保存到<代码> $yStudio数组中,以消除重复和冗余的检查。我将让您对PHP的filesys缓存和session缓存进行基准测试。

在相关函数中,可以使用
fnmatch()
~~来检查是否存在与regex模式匹配的文件。但是,它只返回一个布尔值,因此在OP的情况下没有帮助。只是为了记录re:parallels到PHP中的shell模式。这行中有语法错误吗<代码>$file.=文件存在($file.jpg')?'jpg:‘巴布亚新几内亚’未关闭的报价在
'jpg
之后。现在已在文章中修复。具有多个扩展名的文件可能类似于:
file.en.html
。这是正确的,但可能不是你这里的意思。