Поиск pdf-файлов

У меня есть один маленький вопрос, это мой код для отображения всех файлов из папки и подпапок;

if ($handle = opendir($dir)) {

$allFiles = array();

while (false !== ($entry = readdir($handle))) {
    if ($entry != "." && $entry != "..") {
        if (is_dir($dir . "/" . $entry)){
            $allFiles[] = "D: " . $dir . "/" . $entry;
        }else{
            $extension = strtoupper(pathinfo($entry, PATHINFO_EXTENSION));
            $fileNoExten = pathinfo($entry, PATHINFO_FILENAME);
            $directory = substr(str_replace('/', ' > ', $dir), $rootLenOnce + 3);
            $listagem .= '<tr>';
                $listagem .= "<td><a href='../" . $dir . "/" . $entry . "' ' target='_blank'>" . $entry . "</a></td>";
                //$listagem .= "<td><small>" . $directory . "</small></td>";
                $listagem .= "<td>" . $extension . "</td>";
                $listagem .= "<td><a class='download-cell' href='../".$dir ."/". $entry."' ' download> <i class='fa fa-download' ></i></a></td>";
                $listagem .= "<td class='display-none'>" . $fileNoExten . "</td>";
                $allFiles[] = "F: " . $dir . "/" . $entry;
            $listagem .= '</tr>';
            echo "<pre>"; print_r(glob("*.pdf")); echo "</pre>";
        }
    }
}
closedir($handle);

foreach($allFiles as $value){
    $displayName = substr($value, $rootLen + 4);
    $fileName    = substr($value, 3);
    $linkName    = str_replace(" ", "%20", substr($value, $pathLen + 3));
    if (is_dir($fileName)) {
        myScanDirPdf($fileName, $level + 1, strlen($fileName),$rootLenOnce);
     }
   }
 }
 return $listagem;
}

мне нужно отфильтровать поиск, чтобы искать только файлы .pdf.

Кто-нибудь может мне помочь, плз!

Спасибо!

я пытаюсь с функцией glob, но не с большими результатами.

Спасибо!


person freixo    schedule 22.08.2019    source источник
comment
Попробуйте это: stackoverflow.com/a/25258678/2776343   -  person Manzolo    schedule 22.08.2019
comment
@AndreaManzi, спасибо! но не работай. :(   -  person freixo    schedule 22.08.2019
comment
Вы уверены, что $dir - это полный путь к вашему каталогу?   -  person Manzolo    schedule 22.08.2019
comment
@AndreaManzi да   -  person freixo    schedule 22.08.2019
comment
веб-сервер имеет разрешение на чтение в папке $dir?   -  person Manzolo    schedule 22.08.2019
comment
@AndreaManzi да   -  person freixo    schedule 22.08.2019
comment
файлы имеют расширение PDF или PDF?   -  person Manzolo    schedule 22.08.2019
comment
@AndreaManzi, оба.   -  person freixo    schedule 22.08.2019
comment
эта работа для меня: print_r(rsearch($dir, /^.*\.(pdf)$/)); function rsearch($folder, $pattern) { $dir = new \RecursiveDirectoryIterator($folder); $ite = новый \RecursiveIteratorIterator($dir); $files = новый \RegexIterator($ite, $pattern, \RegexIterator::GET_MATCH); $список_файлов = массив(); foreach ($files as $file) { $fileList[] = $file[0]; } вернуть $fileList; }   -  person Manzolo    schedule 22.08.2019


Ответы (1)


Когда вы просматриваете каждый файл, вы можете использовать

        if(stripos($fileName, ".pdf"))

Надеюсь, это поможет

У меня есть еще одно предложение по перечислению всех файлов и подпапок. Вы можете использовать рекурсивный итератор

$folderName = $_POST['folderName'];
$dir = new RecursiveDirectoryIterator($folderName);
$it  = new RecursiveIteratorIterator($dir);
foreach ($it as $fileinfo) {
    if ($fileinfo->isDir()) {
    }elseif ($fileinfo->isFile()) {
        $fileName = $fileinfo->getFileName();
        if(stripos($fileName, ".pdf")) {
        //do what you need to do 
        }
    }
}
person Muhammed Shihabudeen Labba A    schedule 22.08.2019
comment
Когда я пытаюсь использовать полоски, отображаются только файлы в корневом каталоге. Спасибо! - person freixo; 22.08.2019
comment
@freixo, я использовал этот метод для перебора папок и подпапок, чтобы скопировать все файлы PDF. Это сработало для меня - person Muhammed Shihabudeen Labba A; 22.08.2019
comment
Попробуйте еще раз, если это сработает, примите мой ответ. Спасибо - person Muhammed Shihabudeen Labba A; 22.08.2019
comment
Хорошо, спасибо, один маленький вопрос, могу ли я использовать полосы в моем коде? спасибо! - person freixo; 22.08.2019
comment
Да, вы можете. Когда у вас есть все файлы в массиве, прокрутите каждый файл и используйте stripos или strpos в зависимости от чувствительности к регистру. - person Muhammed Shihabudeen Labba A; 22.08.2019
comment
foreach($allFiles as $value){ $displayName = substr($value, $rootLen + 4); $fileName = substr($value, 3); $linkName = str_replace(, %20, substr($value, $pathLen + 3)); if (is_dir(stripos($fileName, .pdf))) { myScanDirPdf($fileName, $level + 1, strlen($fileName), $rootLenOnce); } } Верно? Я получаю все файлы только в корневом дураке. :( Извините за моего нуби - person freixo; 22.08.2019
comment
При этом: if ($entry != . && $entry != .. && stripos($entry, '.pdf') === false) Форма не показывает pdf-файлы, но если я укажу true, не ничего не показывай @Muhammed - person freixo; 26.08.2019