正确使用preg_match?

发布于 2024-11-15 07:31:17 字数 143 浏览 2 评论 0原文

我如何更改以下 preg_match() 代码以也阻止 index.html 文件,而不是仅阻止“.” 、“..”或“.htaccess”?

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

How would I change the following preg_match() code to also block the index.html file, stead of only '.' , '..' , or '.htaccess'?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

神爱温柔 2024-11-22 07:31:17

这应该可以做到

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

但是,这里不需要正则表达式

in_array($file, array('.', '..', '.htaccess', 'index.html'))

更具可读性并且更容易扩展:)

This should do it

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

However, regular expressions are not necessary here

in_array($file, array('.', '..', '.htaccess', 'index.html'))

More readable and easier to extend :)

满栀 2024-11-22 07:31:17

就像这样:

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

顺便说一句,括号只是为了清楚起见。

That would be something like:

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

By the way, the parenthesis are just for clarity.

别忘他 2024-11-22 07:31:17

实际上 preg_match('/^\.(htaccess|\.)?/',$file) 也会阻止以 . 开头的任何其他文件(因为 ?)。所以KingCrunch的第二个解决方案是不一样的并且可能有风险!

因此,当您想要匹配以点开头的任何文件(因此还包括 .htaccess..)和 index.html 时,您可以使用:

preg_match('/^(\.|index\.html)/',$file)

Actually preg_match('/^\.(htaccess|\.)?/',$file) blocks also any other file beginning with a . (because of the ?). So KingCrunch's second solution is not the same and can be risky!

So when you want to match any file starting with a dot (so also including .htaccess and ..) and index.html you could use:

preg_match('/^(\.|index\.html)/',$file)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文