Выполните итерацию по текстовому файлу и проверьте, существует ли файл на сервере

У меня есть текстовый файл с 40 000 путей к файлам с именами файлов, которые мне нужно проверить, если они существуют.

Чтобы проверить наличие одного файла, я использую следующий код:

$filename='/home/httpd/html/domain.com/htdocs/car/002.jpg';
if (file_exists($filename)) {
echo "The file $filename exists";
} else {
echo "The file $filename does not exist";
}

Этот код работает.

Теперь я хочу перебрать текстовый файл, который содержит один путь на строку

/home/httpd/html/domain.com/htdocs/car/002.jpg
/home/httpd/html/domain.com/htdocs/car/003.jpg
/home/httpd/html/domain.com/htdocs/car/004.jpg
...

Я пытался перебрать текстовый файл с этим кодом, но я получаю «файл не существует» для всех файлов.

$file = "list.txt";
$parts = new SplFileObject($file);
foreach ($parts as $filename) {
if (file_exists($filename)) { echo "The file $filename exists"; }
else { echo "The file $filename does not exist"; }
}

2

Решение

Ваш list.txt Файл имеет новую строку в конце каждой строки. Вы должны сначала обрезать это перед использованием $filename в file_exists() как это например

<?php
$file = "list.txt";
$parts = new SplFileObject($file);
foreach ($parts as $filename) {
$fn = trim($filename);
if (file_exists($fn)) {
echo "The file $fn exists\n";
} else {
echo "The file $fn does not exist\n";
}
}
1

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

когда вы загружаете файл, попробуйте разбить строку на массив с помощью функции explode ().
Тогда вы сможете проверить с помощью функции file_exist

0

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