正确使用preg_match?

时间:2011-06-10 21:53:59

标签: php .htaccess match

如何更改以下preg_match()代码以阻止index.html文件,而不仅仅是'。' ,'..'或'.htaccess'?

preg_match('/^\.(htaccess|\.)?/',$file)

3 个答案:

答案 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)