6

我需要一个本机或用户制作的函数来检查字符串是否是有效的目录名称。我查看了 PHP 文档,我只能找到is_dir检查它是否是现有目录而不是有效目录名称的函数。

4

2 回答 2

9

这应该适合你。

请参阅正则表达式以验证文件夹名称和文件名

if (strpbrk($filename, "\\/?%*:|\"<>") === FALSE) {
  /* $filename is legal; doesn't contain illegal character. */
}
else {
  /* $filename contains at least one illegal character. */
}
于 2012-10-01T19:58:39.023 回答
5

这会奏效。您可以根据需要修改第二个和第三个参数。

if (!mkdir($directory, 0700, true)) {
    die('Error: Illegal directory.');
}

请注意,如果目录名称有效,这将创建目录。但是,以我的拙见(并且不知道您的特定用例),这是大多数语言中处理检查目录名称有效性的首选方式。只需尝试创建目录,如果失败,则告诉他们它失败了​​。

这样做的好处是它使您的代码文件系统不可知,并且它是验证和创建目录的最不容易出错的方法,因为在您验证目录和何时之间没有其他进程或线程能够创建目录你创造它。

缺点是此方法假定您要立即创建目录。

当然,mkdir()可能失败的原因有很多(例如,权限不足、硬件故障、目录名无效等),因此您可能希望根据错误向用户显示不同的错误消息。不幸的是,PHP 没有像其他一些语言那样强大的异常处理,但是如果您想走这条路,您应该能够使用诸如此答案mkdir()中的方法来捕获可能生成的不同警告。

于 2012-10-01T20:18:15.637 回答