У меня есть текстовый файл с 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"; }
}
Ваш 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";
}
}
когда вы загружаете файл, попробуйте разбить строку на массив с помощью функции explode ().
Тогда вы сможете проверить с помощью функции file_exist