PHP - List files in a directory

Asked

Viewed 1,526 times

2

I have over a thousand pages on html, would like that my script below list all the files in a directory instead of being loaded manually, today I have to do one to one. Is unviable!

Please see the code below:

<?php

    $url = "lugar-amaricano-fundo-transparente-yangz-cp0012447.html"; /* ******** OBSERVAÇÃO: TEM COMO O script listar os arquivos em um diretório, ao invés de serem carregados manualmente? ******* */
    $content  = trim(file_get_contents($url));

    /*
        Função generica pode ser usada para pegar qualquer dado
        Retorna variável entre os valosres $ini(inicio) e $end(fim)
        $con = retorno do conteudo referênte ao html ou url
        $ini = inicio
        $end = fim
    */
    function getValues($ini, $end, $con){
        $value = explode( $ini , $con);
        $val = explode($end , $value[1] );
        return $val[0];
    }

    /*
        Função que retorna ID da marca
        retorna ID da marca passado como parâmetro.
        $val = marca
    */
    function getId($val){
        $array = str_split($val);
        $length = count($array);
        foreach($array as $key => $value){
            if($value == "_"){
                $ini = $key+4;
            }            
        }   

        return substr($val,$ini,3);
    }

    $titulo = getValues("<h1>", "</h1>", $content);
    $marca = getValues('<li>Marca: ', "</li>", $content);
    $modelo = getValues('<li id="modeloDoProduto">', "</li>", $content);
    $disponibilidade = getValues('<h4 class="stockProduto">', "</h4>", $content);
    $preco = getValues('<h2  id="precoDoProduto">', "</h2>", $content);
    $unidade = getValues('<p></p>', "</div>", $content);
    $id = getId($marca);

    echo 'Titulo: '.$titulo.'<br/>';
    echo 'Marca: '.$marca.'<br/>';
    echo $modelo.'<br/>';
    echo $disponibilidade.'<br/>';
    echo 'Preco: '.$preco.'<br/>';
    echo 'Unidade: '.$unidade.'<br/>';
    // echo 'id: '.$id.'<br/>'; /* ******** OBSERVAÇÃO: NÃO PRECISO DESTE ID ******* */

    /* ******** INÍCIO DA INCLUSÃO DE NOVOS PARAMENTROS ******* */
    $urldaimagem = getValues('<ul class="thumbnails">', "</ul>", $content);
    $explode = explode(' ', $urldaimagem);
    // o explode retorna uma matriz
    $urldaimagem = $explode[26];
    $urldaimagem2 = $urldaimagem;   
    $urldaimagem3 = str_replace('href="../image/cache/catalog/fornecedor1/', 'http://www.comprenet.com.br/image/cache/catalog/fornecedor1/', $urldaimagem2);
    $urldaimagem4 = str_replace('"', '', $urldaimagem3);

    $empresa = str_replace('href="../image/cache/catalog/fornecedor1/', '', $urldaimagem2);
    $empresa2 = str_replace('-500x500.jpg"', '', $empresa);

    echo 'URL da Imagem: '.$urldaimagem4.'<br/>';

    echo 'Codigo na empresa: '.$empresa2.'<br/>';
    echo 'URL do Produto: '.$url.'<br/>';

    $descricao = getValues('<div class="tab-pane active" id="tab-description">', "</div>", $content);
    echo 'Descrição do Produto: '.$descricao.'<br/>';
    echo '******************************'.'<br/>';
    /* ******** FIM DA INCLUSÃO DE NOVOS PARAMENTROS ******* */

?>

2 answers

4

You can use scandir: documentation here

Here is a simple example of the documentation:

<?php
$dir    = '/tmp';
$files1 = scandir($dir);
$files2 = scandir($dir, 1);

print_r($files1);
print_r($files2);


/*
Saida:
Array
(
    [0] => .
    [1] => ..
    [2] => bar.php
    [3] => foo.txt
    [4] => somedir
)
Array
(
    [0] => somedir
    [1] => foo.txt
    [2] => bar.php
    [3] => ..
    [4] => .
)
*/

I did not apply the solution to your code for the difficulty of testing. However, the use is simple and you will certainly be able to use without problems.

1

Example to filter only files with extension .html. It will return an array with the name of the files, where path is the path of the folder where your files are.

Code:

<?php

$path = 'C:\\exemplo\\';

$files = str_replace($path, "", glob($path . "*.html"));

print_r($files);

?>

Exit:

Array
(
   [0] => teste.html
)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.