PHP中是否有一种内置的方法来解析如下字符串:'/path/to/./../up/something.txt';

PHP中是否有一种内置的方法来解析如下字符串:'/path/to/./../up/something.txt';,php,directory-structure,Php,Directory Structure,假设我有一个类似路径的字符串 $path = '/path/to/../../up/something.txt'; 是否有一种内置到PHP中的方法来解析它,并生成一个没有目录ups(../)的URL 例如 PHP的realpath()很酷,但是如果您想在不访问文件系统的情况下解决这个问题呢 我编写了这个函数,它可以返回一个路径,并将。/等计算为实际路径 它可能不会处理所有的path命令,所以如果您认为我应该实现另一个,请告诉我 public function resolvePath($path

假设我有一个类似路径的字符串

$path = '/path/to/../../up/something.txt';
是否有一种内置到PHP中的方法来解析它,并生成一个没有目录ups(../)的URL

例如

PHP的
realpath()
很酷,但是如果您想在不访问文件系统的情况下解决这个问题呢

我编写了这个函数,它可以返回一个路径,并将
。/
等计算为实际路径

它可能不会处理所有的path命令,所以如果您认为我应该实现另一个,请告诉我

public function resolvePath($path) {

    while (strstr($path, '../')) {
        $path = preg_replace('/\w+\/\.\.\//', '', $path);
    }

    return $path;

}

只要$path对应于您具有读取权限的实际文件系统路径,我就从中借用了正则表达式。

。它不能像任何任意路径一样完成任务(但也有原因)。@Hobbs,这是值得注意的。当我尝试使用任意字符串时,我发现了这一点@echo我不得不说,我几乎可以原谅PHP的不整洁和不一致,因为它内置了大量很酷的东西:)
realpath($path);
public function resolvePath($path) {

    while (strstr($path, '../')) {
        $path = preg_replace('/\w+\/\.\.\//', '', $path);
    }

    return $path;

}