正确使用glob()

时间:2010-12-12 21:05:08

标签: php

这对我们来说是正确的方式glob()我正在尝试对服务器上的文件夹 TestFolder 进行不区分大小写的搜索。

$chid = "testFoLdER";
$dirchk2 = "/temp/files/" . glob('".$chid."') . "/" . $data[1] . ".doc";

@code_burgar 我做了这些更改以应用于示例code_burgar向我展示。它是否正确? 我在这里尝试做的是globistr找到套管,将文件夹重命名为小写。

$chid = (strtolower($_POST['chid']));
$findbatch = globistr($chid);
$results = glob($findbatch);

if ( !empty($results) ) {
  $result = $results[0];
  rename("/temp/files/" . $results . "/", "/temp/files/" . strtolower($chid) . "/");
} 
else 
{
    $missing_dir = 'Folder containing files, Not Found: ' . $chid . "\r";
    $errfile = fopen("/rec/" . $chid . "-errlog.txt", "a");
        fwrite($errfile, $missing_dir . "\n");
        fclose($errfile);
        exit();                           
}

2 个答案:

答案 0 :(得分:1)

这绝对不是使用glob()的方法。 glob()返回一个数组,并且您尝试在字符串连接中使用它。

正如Pekka所指出的,glob的PHP手册页有一些不区分大小写的示例代码。

您正在寻找的内容基本上是这些内容(globistr()来自PHP手册页评论):

$chid = globistr("testFoLdER");
$results = glob($chid);

if ( !empty($results) ) {
  $result = $results[0];
  $dirchk2 = "/temp/files/" . $result . "/" . $data[1] . ".doc";
} else {
  echo('Not found');
}

答案 1 :(得分:1)

作为解决方法,您可以搜索包含 $ data [1]的 / temp / files / 中的所有文件夹。 '.doc'文件,然后遍历结果以进行不区分大小写的检查路径是否包含您的文件夹。

$file = "/temp/files/*/".$data[1].".doc";
$locations = glob($file);
$found = false;

foreach($locations as $l){
    if(stripos($l,'/testfolder/') !== false){
        $found = $l;
        break; 
    }
}