如何更改以下preg_match()代码以阻止index.html文件,而不仅仅是'。' ,'..'或'.htaccess'?
preg_match('/^\.(htaccess|\.)?/',$file)
答案 0 :(得分:3)
这应该这样做
preg_match('/^(\.(htaccess|\.)?|index\.html)/',$file)
但是,这里不需要正则表达式
in_array($file, array('.', '..', '.htaccess', 'index.html'))
更易读,更容易扩展:)
答案 1 :(得分:0)
这就像是:
preg_match('/^(\.(htaccess|\.)?)|(index\.html)/',$file)
顺便说一下,括号只是为了清晰起见。
答案 2 :(得分:0)
实际上,preg_match('/^\.(htaccess|\.)?/',$file)
也会阻止以.
开头的任何其他文件(因为?
)。所以KingCrunch的第二个解决方案并不相同,可能会有风险!
因此,当您想要匹配任何以点开头的文件(包括.htaccess
和..
)和index.html
时,您可以使用:
preg_match('/^(\.|index\.html)/',$file)