我需要一个本机或用户制作的函数来检查字符串是否是有效的目录名.我已经浏览了PHP文档,我只能找到is_dir检查它是否是现有目录的函数,而不是目录的有效名称.
这应该适合你.
if (strpbrk($filename, "\\/?%*:|\"<>") === FALSE) {
/* $filename is legal; doesn't contain illegal character. */
}
else {
/* $filename contains at least one illegal character. */
}
Run Code Online (Sandbox Code Playgroud)
这会奏效。您可以根据需要修改第二个和第三个参数。
if (!mkdir($directory, 0700, true)) {
die('Error: Illegal directory.');
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果目录名称有效,这将创建目录。但是,以我的拙见(并且不知道您的特定用例),这是大多数语言中处理检查目录名称有效性的首选方式。只需尝试创建目录,如果失败,则告诉他们它失败了。
这样做的好处是它使您的代码文件系统不可知,并且它是验证和创建目录的最不容易出错的方法,因为在验证目录和验证目录之间没有其他进程或线程能够创建目录你创造它。
缺点是此方法假定您要立即创建目录。
当然,mkdir()失败的原因有多种(例如,权限不足、硬件故障、目录名无效等),因此您可能希望根据错误向用户显示不同的错误消息。不幸的是,PHP 没有像其他一些语言那样强大的异常处理,但是如果您想沿着这条路走下去,您应该能够使用此答案中的方法来捕获mkdir()可能生成的不同警告。