массивы — Как отобразить все изображения, если они существуют в папке PHP?

У меня есть сценарий PHP, который сканирует указанный каталог Movie, а затем отображает его в стиле на веб-странице, используя для цикла и PHP. Код ниже. Я попытался использовать glob, но как только у меня есть все изображения в массиве, как мне сравнить их с массивом со всеми фильмами, а затем, если изображение и папка фильмов совпадают, чтобы отобразить изображение с правильным именем?

<?php
// set dir to the directiry you want to index
$dir = 'Movies/';

// scanning the directory you set
$scan = scandir($dir);

// I have this value at 11 because the first movie shows up
// in the 11th file in the array
$file = 11;

// This then removes the first useless files from our array
$scanned = array_slice($scan, $file);

// gets the amount of files
$FileNum = count($scanned);

// display all images and fanart
$images = glob('*.jpg');

// for loop that goes through the array
for ($i = 0; $i <= $FileNum; $i++) {

// gives the class for styling
echo  '<li class="image">';

это проблема немного

    // check if there is fanart/images in the folders
if (file_exists($dir . $scanned[$i] . $images)) {

// if there is images display them styled
echo '<img id="box1" src="' . $dir . $scanned[$i] . '*.jpg' . '" width="280" height="150" />';
} else {

// if not then display default image
echo '<img id="box1" src="http://placehold.it/280x150" width="280" height="150" />';
}
// make the box clickable to where the folder is located
echo '<a href="'. $dir . $scanned[$i] .'">';

// display the name of the movie and some JS
echo '<span class="text-content"><span>' . $scanned[$i] .'<br><br><i class="fa fa-4x  fa-play-circle-o"></i><br><br><i class="fa fa-chevron-down" onclick="openNav()" aria-hidden="true"></i></span></span> </a>';
}

Структура файла выглядит следующим образом

      `MOVIES---
\--random movies
\--mp4 and .jpg files`

Чтобы уточнить мой вопрос: есть ли способ проверить, существует ли файл, и если он существует, то поместить его в массив? Я пытался использовать glob, но не могу проверить, существует ли файл.

-1

Решение

Ну есть * в вашем echo Я не думаю, что это должно быть там.

И если ваш каталог фильмов обновляется, или изображения. Тогда ваш скрипт больше не работает. Из-за жесткой нарезки (11-й файл).

Может быть, это будет работать для вас:

<?php
// movies
$dir = "movies/";
$files = scandir($dir);

$movies = array();
$images = array();

foreach ($files as $file) {
// check for the mime type:
$mime = mime_content_type($dir . $file);

$type = substr($mime, 0,5);
$filename = pathinfo($dir . $file, PATHINFO_FILENAME);

if ($type == "video") $movies[] = $file;
if ($type == "image") $images[] = $filename;
}

foreach ($movies as $movie) {
$placeholder = true;
foreach($images as $image) {
if (strpos($movie, $image) !== false) {
$placeholder = false;
continue;
}
}
if ($placeholder) {
echo $movie . " - placeholder<br>";
} else {
echo $movie . " - image<br>";
}
}

Работает с мим-типа.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]