如何在PHP7.1中使用preg_match查找名称中有点的文件

如何在PHP7.1中使用preg_match查找名称中有点的文件,php,Php,我想找到所有文件的名称中有一个点(第一个字母)。我的代码: $dir = ('/public_html/'); $iterator = new RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir, \FilesystemIterator::SKIP_DOTS), \RecursiveIteratorIterator::CHILD_FIRST); foreach ($iterator as $filename => $

我想找到所有文件的名称中有一个点(第一个字母)。我的代码:

$dir = ('/public_html/');
$iterator = new RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir, \FilesystemIterator::SKIP_DOTS), \RecursiveIteratorIterator::CHILD_FIRST);
foreach ($iterator as $filename => $fileInfo) {
    if ($fileInfo->isDir()) {
        //echo $filename . '<br />';
    } else {
        if (preg_match("/(\A[.].*)/", $filename)) {
            echo $filename . '<br/>';
        }
    }
}

您就快到了,唯一的问题是您使用的变量
$filename
是文件的完整路径。 因此,如果您在哪里查找名为
.gitignore
的文件,您将得到
/public\u html/.gitignore

您需要的是在
$fileInfo
对象上使用方法
getFullName()
,然后您将获得确切的文件名,您的正则表达式将正常工作

if (preg_match("/(\A[.].*)/", $fileInfo->getFileName())) {
   echo $filename . '<br/>';
}
if(preg_match(“/(\A[.].*)/”,$fileInfo->getFileName()){
回显$filename.“
”; }

祝你好运:)

你不需要
regex来完成这么简单的任务<代码>如果($filename[0]='.')
就足够了。只是想澄清一下-这个副本实际上起了相反的作用,所以你需要改变逻辑。我的英雄。谢谢你的帮助。@AdamNowacki当然,NP:)
if (preg_match("/(\A[.].*)/", $fileInfo->getFileName())) {
   echo $filename . '<br/>';
}