我正在尝试取消链接目录中没有扩展名的文件。
我做了以下,但没有奏效:
$fileInfo = pathinfo($this->outputPath);
if($fileInfo['extension'] == NULL)
{
unlink($fileInfo['dirname'].$fileInfo['basename']);
}
答案 0 :(得分:2)
正如@CBroe在评论中注意到的那样:
你与NULL的比较在这里是错误的。
检查empty'而不是:
$fileInfo = pathinfo($this->outputPath);
if(empty($fileInfo['extension']))
{
unlink($fileInfo['dirname'] . DIRECTORY_SEPARATOR . $fileInfo['basename']);
}
此外,您错过了DIRECTORY_SEPARATOR
和dirname
之间的basename
。
更新:正如@hassan指出的那样,empty
也不是检查这一点的正确方法。这是因为类似unix的系统上的目录.
和..
将通过此测试,这是不可取的。
因此,检查没有extension
的文件的正确方法是:
if(isset($fileInfo['extension']) === false)
{
unlink($fileInfo['dirname'] . DIRECTORY_SEPARATOR . $fileInfo['basename']);
}
答案 1 :(得分:2)
注意:
如果路径没有扩展名,则没有扩展名元素 将被退回(见下面的第二个例子)。
因此您需要使用isset检查返回的值是否具有扩展元素,请注意使用empty将传递unix系统中的点目录,例如,如果您正在迭代某些目录为空将将.
和..
目录视为空扩展元素
// check if not isset
if(isset($fileInfo['extension']) === false) {
// perform some action
}
或者如果将来你想要执行一些复杂的搜索[例如:递归搜索没有扩展名的文件],你可以使用FilesystemIterator
foreach (new FilesystemIterator($dir) as $fileInfo) {
// check if some file extension is null
if ($fileInfo->getExtension() == null) {
// perform some action
}
}