Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查字符串以获取有效的目录名_Php_Directory - Fatal编程技术网

Php 检查字符串以获取有效的目录名

Php 检查字符串以获取有效的目录名,php,directory,Php,Directory,我需要一个函数,本机或用户制作的,检查字符串是否是有效的目录名。 我已经浏览了PHP文档,我只能找到函数is_dir,它检查它是否是一个现有目录,并且不是一个有效的目录名。这应该适合您 看 if(strpbrk($filename,\\/?%*:\\)==FALSE){ /*$filename是合法的;不包含非法字符*/ } 否则{ /*$filename至少包含一个非法字符*/ } 这样就行了。您可以根据需要修改第二个和第三个参数 if (!mkdir($directory, 0700, tr

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

这应该适合您

if(strpbrk($filename,\\/?%*:\\)==FALSE){
/*$filename是合法的;不包含非法字符*/
}
否则{
/*$filename至少包含一个非法字符*/
}

这样就行了。您可以根据需要修改第二个和第三个参数

if (!mkdir($directory, 0700, true)) {
    die('Error: Illegal directory.');
}
请注意,如果目录名有效,这将创建目录。但是,在我看来(并且不知道您的特定用例),在大多数语言中,这是处理检查目录名有效性的首选方法。只需尝试创建目录,如果失败,则告诉他们失败

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

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


当然,
mkdir(),因此您可能希望根据错误向用户显示不同的错误消息。不幸的是,PHP不像其他一些语言那样具有强大的异常处理功能,但是如果您想继续这样做,您应该能够使用类似这样的方法来捕获不同的警告,
mkdir()
可以生成。

定义“有效目录名”“每个操作系统都有自己的限制。定义什么是合法的,什么是非法的,然后进行验证。不存在的目录将是无效的目录,不是吗?您可以搜索“常规”目录regex..根据使用的文件系统,所有内容都可以是有效的路径名。我知道不同的操作系统和文件系统有自己的限制。我正在寻找一种通用的方法来检查它是否是目录的有效名称。我不是文件系统方面的专家,所以我不知道根据所讨论的文件系统,任何东西都可能是有效的目录名。从我的观点来看,完全有可能出现一个句点(.)根本不允许使用的情况。也许你应该试试这个:
mkdir('dirname/test/./temp',0700,true)
过滤
$directory
名称以查找@GregoryBurns在其答案中建议的某些内容肯定会很有用。。。
if (!mkdir($directory, 0700, true)) {
    die('Error: Illegal directory.');
}