“。”在哪里(点)来自使用PHP的'candir'时

时间:2016-03-22 08:37:46

标签: php scandir

我有点困惑。
我正在构建一个PHP函数来循环显示指定目录中的图像。

PHP

$dir = "bilder/".$objekt[0]['objekt_nr']."/thumbnail/";
$thumbnails = scandir($dir);

print_r($thumbnails);

foreach ($thumbnails as $value) {
   echo "<img src='".$dir.$value. "'>";
}

阵列

(
[0] => .
[1] => ..
[2] => bjornc.jpg
[3] => test_bild3.jpg
)

HTML

<img src='bilder/22159/thumbnail/.'>
<img src='bilder/22159/thumbnail/..'>
<img src='bilder/22159/thumbnail/bjornc.jpg'>
<img src='bilder/22159/thumbnail/test_bild3.jpg'>

我怎样摆脱theese点?
我猜这是导演点......

更新

最简单的方法是在php.net手册中找到的

$thumbnails = array_diff(scandir($dir), array('..', '.'));

6 个答案:

答案 0 :(得分:6)

点目录是当前目录。 Dot-dot是目录。

如果你想在一个目录中创建一个文件列表,你真的应该跳过那两个,或者真正的任何目录,从一个前导点开始(在Linux和OSX等POSIX系统上应该是那些是隐藏的目录)。

你可以通过检查文件名中的第一个字符是否为点,以及是否只是跳过它(即你continue循环)来做到这一点。

答案 1 :(得分:3)

您可以使用in_array作为

跳过它
foreach ($thumbnails as $value) {
    if (!in_array($value, array(".", ".."))) {
        echo "<img src='" . $dir . $value . "'>";
    }
}

答案 2 :(得分:1)

它们是目录和父目录,可以使用以下代码删除它们:

    <?php
    $dir = "downloads/";
    if (is_dir($dir)){
        if ($dir_handler = opendir($dir)){
            while (($file = readdir($dir_handler)) !== false){
                if ($file!="."&&$file!="..") {
                    //your code
                }
            }
        closedir($dir_handler);
        }
    }
    ?>

答案 3 :(得分:1)

您也可以使用此

foreach ($thumbnails as $value) {
   if ( $value !='.' && $value !='..')
   {
     echo "<img src='".$dir.$value. "'>";
   }  
}

答案 4 :(得分:1)

如果您要查找特定的文件类型,例如图片,最好使用glob 它允许您传递扩展模式 这样,您可以确保只获取要查找的文件。

多种文件类型的示例,.jpg.png

$dir = "bilder/".$objekt[0]['objekt_nr']."/thumbnail/";
$files = glob("*.{jpg,png}", GLOB_BRACE);

print_r($files);
  

GLOB_BRACE - 扩展{a,b,c}以匹配&#39;&#39;&#39; b&#39;或&#39; c&#39;

单个文件类型的示例.jpg

$dir = "bilder/".$objekt[0]['objekt_nr']."/thumbnail/";
$files = glob("*.jpg");

print_r($files);

答案 5 :(得分:0)

@joachim Pileborg答案是正确的,顺便说一下你也可以使用glob()

$thumbnails = glob("$dir/*.jpg");

foreach ($thumbnails as $value) {
   echo "<img src='$value'/>";
}