Regex验证linux文件名(多编码)


Regex to validate linux filename (multi encoding)

设置如下:Fedora Linux/PHP/Apache

我有一个要求,允许用户用他们的语言输入文件名。当我在测试时,Linux用阿拉伯语创建了fine文件。

我的问题是,我应该使用什么字符和什么正则表达式来验证文件名?

一般:POSIX允许除

以外的所有字符
  • '0 (null char)
  • / (path separator)

什么都可以,所以这真的取决于想要接受什么

如果您希望文件名也可以移植到Windows上,请记住:

  • windows使用不区分大小写的文件名
  • 什么是有效的windows文件名

所有字符串都是有效的,除了0x00。所以不用正则表达式,试试:

if (strpos($filename,"'x00")===false) {
}