1

エラー: readdir() は、パラメーター 1 がリソースであると想定しています。文字列が指定されています

$directorypremium = 'uploads/premium/'.text2url($pseudo_cookies).'/'; 

while($file = readdir($directorypremium)) {
        if($file != '.' AND $file != '..')
            {
            $taille_fichier = filesize($directory.$file); $taille_fichier = round($taille_fichier / 1000); $total_size = $total_size + $taille_fichier;
            }
        }

私の機能text2url:

function text2url($chaine)
    {
    $chaine = htmlentities($chaine, ENT_NOQUOTES, 'utf-8');
    $chaine = preg_replace('#\&([A-za-z])(?:uml|circ|tilde|acute|grave|cedil|ring)\;#', '\1', $chaine);
    $chaine = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $chaine);
    $chaine = preg_replace('#\&[^;]+\;#', '', $chaine);
    $chaine = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $chaine);
    $chaine = str_replace('(', '', $chaine);
    $chaine = str_replace(')', '', $chaine);
    $chaine = str_replace('[', '', $chaine);
    $chaine = str_replace(']', '', $chaine);
    $chaine = str_replace('.', '-', $chaine);
    $chaine = trim($chaine);
    $chaine = str_replace(' ', '_', $chaine);

    return $chaine;
    }

問題は $chaine が文字列値であることはわかっていますが、readdir で受け入れられるように問題を修正することはできません。$chaine を readdir 関数にとって価値のあるものにする方法はありますか?

4

2 に答える 2

3

関数は、関数readdirから取得したリソースを受け入れopendirます。

$dir = opendir($path);
while($file = readdir($dir)){
...

readdiropendirを参照してください

于 2013-09-29T15:10:27.080 に答える
1

readdir()文字列ではなく、ファイル ハンドルを受け入れます。

マニュアルからの引用:

dir_handle : 以前に で開いたディレクトリ ハンドル リソースopendir()。ディレクトリ ハンドルが指定されていない場合は、によって開かれた最後のリンクopendir()が想定されます。

おそらくopendir()最初に使用しますか?

于 2013-09-29T15:10:00.707 に答える