使用file_exists()或glob()php返回图像之间的比较

时间:2018-07-23 14:16:37

标签: php

我目前正以这种方式使用图像:

第一种方法

这是图像与其数据库令牌之间的直接链接:它返回图像。这种方法并不关心图像是否存在。

 $token = "abc";

  echo "<img src='images/$token/image.jpg' />";

我想知道这是否会更好:

第二种方法

 $token="abc";

 $image_url="images/$token/image.jpg";

 if(file_exists($image_url)){

 echo "<img src='$image_url' />
 }else{

  echo "<img src='icons/no-image.png' />

  }

或另一种方式

第三种方法

 $token = "abc";

$files = glob("images/$token/".'/*.{jpg,png,gif}', GLOB_BRACE);

  foreach($files as $file) {
           echo "<img src='$file' />
   }

我目前正在使用第一种方法,您会更推荐这种方法,为什么?

2 个答案:

答案 0 :(得分:0)

我认为,如果您只想显示一张图片,则第二种方法很好。 此外,如果令牌不存在,您也会遇到这种情况。

如果要显示一个或多个图像但是,而您忘记检查 $ files 是否为空,则第三个也很好。

因此正确的解决方案取决于您的需求。

我能回答你的问题吗?

答案 1 :(得分:0)

glob正在寻找3种文件格式。 file_exists仅在查找请求的文件。 file_exists将占用较少的资源进行处理(尽管可能不会引起注意)。如果<img调用不存在,则会在页面上显示损坏的图像。

我会选择file_exists,除非格式不同,否则您需要选择glob

这是缩短的file_exists版本:

$image_url="images/$token/image.jpg";
$image_output = file_exists($image_url) ? "<img src='$image_url' />" : "<img src='icons/no-image.png' />";
echo $image_output;