Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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_File - Fatal编程技术网

Php 如何判断与文件相关的字符串是否存在,更具体地说,是本地字符串

Php 如何判断与文件相关的字符串是否存在,更具体地说,是本地字符串,php,file,Php,File,我有一个存储在字符串中的文件路径。这可能是一个本地文件路径,或者其他任何东西(也可以考虑HTTP/FTP)。file_exists()可以很好地检查这一点,但是如果文件存在并且在FTP协议上,它也会返回true,我只想知道该文件是否是机器的特定本地文件(只要合理)。我不想对协议执行正则表达式检查或任何操作,因为这里使用的协议不仅仅是HTTP和FTP,因此无法尝试排除所有这些协议。您可以强制路径为本地路径,如下所示: file_exists('file://'. $pathToFile); 因此

我有一个存储在字符串中的文件路径。这可能是一个本地文件路径,或者其他任何东西(也可以考虑HTTP/FTP)。file_exists()可以很好地检查这一点,但是如果文件存在并且在FTP协议上,它也会返回true,我只想知道该文件是否是机器的特定本地文件(只要合理)。我不想对协议执行正则表达式检查或任何操作,因为这里使用的协议不仅仅是HTTP和FTP,因此无法尝试排除所有这些协议。

您可以强制路径为本地路径,如下所示:

file_exists('file://'. $pathToFile);

因此,如果路径具有http或其他内容,则会失败…

为什么不进行协议检查
://
在您实际使用的任何文件系统上都不是(部分)有效名称,如果您发现它,很容易确定协议是否为“文件”(如果它不是“文件”,您并不真正关心它是什么)。如果找不到
://
,那么很明显,这是一个本地文件路径。很容易实现,并且适用于实践中遇到的所有问题。@AndreasLinden:我已经提到过这种可能性:如果你找到一个协议,它是“文件”,去掉协议并继续。多亏了你们两人,文件://技巧很好地工作,我将唯一的“答案”标记为正确,干杯。