如果文件夹为空,则创建文件

时间:2018-10-26 09:05:55

标签: php file directory

如果文件夹为空,我想创建一个包含一些信息的文件。 这是我的脚本:

$fileList = glob('tpe*');
if (count(glob('$fileList/*')) == 0 ) {
    $key = 'index.html';
    $person = "<title> En cours </title> <p> Le site est en cours </p>";
    file_put_contents($key, $person, FILE_APPEND | LOCK_EX);
}

问题是它在当前目录而非空目录中创建了我。

感谢您的帮助;)

2 个答案:

答案 0 :(得分:0)

您的代码中有一些错误。

首先,当您在glob('$fileList/*')中使用单引号时,它是文字字符串$fileList/*。没有变量替代。

如果要将$fileList 放入随后的字符串中,则需要使用双引号(glob("$fileList/*"))或串联(glob($fileList . '/*'))< / p>

下一个错误是glob()返回数组,所以$fileList是一个数组,这意味着您不能简单地将其放入字符串中。

现在,根据您真正想做的事情,您可能想从glob()中获取任何特定结果,或者遍历所有这些结果,然后对它们中的每一个进行所需的操作。

我假设您要在每个匹配的空目录中创建index.html

因此它将是:

foreach($fileList as $filePath) {
    if (count(glob("$filePath/*")) == 0 ) {
       // rest of code
    }
}

现在,您有问题的线索了。将内容放入当前目录的index.html文件中,因为您没有告诉file_put_contents在哪里做。

第一个参数是 path ,而不仅仅是文件名。因此,当您传递index.html值时,它是当前目录的相对路径。

您需要通过整个路径,大概是$filePath . "/index.html",所以它将是:

$key = $filePath . "/index.html";

最后,我想指出,您可能需要其他验证,例如,如果匹配的路径确实是目录。在相对路径上工作也有些冒险。最好依靠绝对路径。

答案 1 :(得分:0)

第3行,而不是

$key = 'index.html';

您应该使用:

$key = $fileList[0].'/index.html';

它将在该文件夹中创建文件,而不是在当前目录中。

相关问题