同时显示图像和文本文件(scandir)


Show image and text file at once (scandir)

我遇到了一个问题。我需要显示图像 - 位于文件夹中 - 如果扩展是.png、.jpg、.jpeg或.gif.如果扩展不是其中之一,则只需显示文件的内容(.tex)。

我做了一个有效的脚本。但它只显示其中之一(一次显示 img 或文本文件)。我需要同时展示它们。

<?php  
            $allFiles = scandir('post/'); 
            $files = array_diff($allFiles, array('.', '..'));
            foreach($files as $file)
                {   
                $ext = substr(strrchr($file, '.'), 1);
                if($ext = "jpg" || $ext = "png" || $ext = "jpeg" || $ext = "gif" ) {
                    echo "<div class=post>
                            <img width= 200px src=post/".$file.">
                        </div>";
                    }
                else {  
                echo    "<div class=post>
                            ". file_get_contents("post/".$file) ."
                        </div>";
                }
                }
         ?>  

非常感谢您的帮助。

已解决的问题:更改为 ==

<?php  
        $allFiles = scandir('post/'); 
        $files = array_diff($allFiles, array('.', '..'));
        foreach($files as $file)
            {   
            $ext = substr(strrchr($file, '.'), 1);
            if($ext == "jpg" || $ext == "png" || $ext == "jpeg" || $ext == "gif" ) {
                echo "<div class=post>
                        <img width= 200px src=post/".$file.">
                    </div>";
                }
            else {  
            echo    "<div class=post>
                        ". file_get_contents("post/".$file) ."
                    </div>";
            }
            }
     ?> 

试试这个:

        $allFiles = scandir('post/');
        $extArray = array('jpg', 'png', 'jpeg', 'gif');
        foreach($allFiles as $file)
        {   
            $ext = end(explode('.', $file));
            if(in_array($ext, $extArray)) {
                echo "<div class='post'>
                         <img width='200px' src='post/'". $file ." />
                      </div>";
            }else {  
                echo "<div class='post'>"
                         . file_get_contents('post/'.$file)
                      ."</div>";
            }
        }