Dossiers et fichiers cachés avec PHP

Voici une fonction PHP qui permet de déterminer si un dossier ou un fichier est caché et qui n'existe pas dans les fonctions de système de fichiers à ma connaissance :

<?php
/**
 * Détermine si un dossier ou fichier est caché
 *
 * @param   string $file    Chemin valide du dossier ou du fichier
 * @return  boolean         Retourne TRUE si le fichier est caché
 */
function is_hidden( $file ) {
    
    
    // Système Unix/Linux
    if ( substr(PHP_OS, 0, 3) != 'WIN' ) {
        return ( preg_match('/^./', basename($file), $match) );
    }
    
    // Système Windows
    else {
        $cmd = 'dir "'.str_replace('/', '', dirname($file)).'" /AH';
        $result = shell_exec($cmd);
        $pattern = '/[0-9]{2}:[0-9]{2}s+(?:<(?:DIR|REP)>)?(?:[0-9]+)?s+(.*?)n/i';
        preg_match_all($pattern, $result, $matches);
        return in_array(basename($file), $matches[1]);
    }

} // end of 'is_hidden()'
?>

Attention : cette fonction est la plus simplissime qui soit et ne gère ni les permissions ni le fait que PHP tourne en safe_mode = on (notament par rapport à l'utilisation de la fonction shell_exec sous Windows). Je suis bien entendu preneur de vos améliorations à ce niveau.

Exemples

<?php
// Sous MS Windows
$hidden = is_hidden('C:Program Files'); // retourne FALSE
$hidden = is_hidden('C:boot.ini'); // retourne TRUE

// Sous Unix/Linux
$hidden = is_hidden('/home'); // retourne FALSE
$hidden = is_hidden('/home/pilgrim/.bashrc'); // retourne TRUE
?>

Posté le Thursday 17 November 2005 dans .

Commentaires

Il n'y a aucun commentaire ; soyez le premier à déposer le vôtre.

Ajouter un commentaire

Il n'est plus possible de réagir à cette entrée directement mais si vous pensez que votre intervention peut être intéressante, envoyez-moi votre commentaire, je l'ajouterai ici en votre nom.