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