Python os.path.normpath()是否有PHP等效函数?

Python os.path.normpath()是否有PHP等效函数?,php,python,path,Php,Python,Path,Pythonos.path.normpath()是否有与PHP等效的函数? 或者如何在PHP中获得完全相同的功能?是的,该命令将返回一个规范化的路径。它类似于Python的os.path.normpath和os.path.realpath的组合版本 然而,它也将解决符号链接。我不知道如果你不想这样做,你会怎么做。下面是我对PHP中Python的posixpath.py中normpath()方法的1:1重写: function normpath($path) { if (empty($pa

Python
os.path.normpath()
是否有与PHP等效的函数?
或者如何在PHP中获得完全相同的功能?

是的,该命令将返回一个规范化的路径。它类似于Python的
os.path.normpath
os.path.realpath
的组合版本


然而,它也将解决符号链接。我不知道如果你不想这样做,你会怎么做。

下面是我对PHP中Python的posixpath.py中normpath()方法的1:1重写:

function normpath($path)
{
    if (empty($path))
        return '.';

    if (strpos($path, '/') === 0)
        $initial_slashes = true;
    else
        $initial_slashes = false;
    if (
        ($initial_slashes) &&
        (strpos($path, '//') === 0) &&
        (strpos($path, '///') === false)
    )
        $initial_slashes = 2;
    $initial_slashes = (int) $initial_slashes;

    $comps = explode('/', $path);
    $new_comps = array();
    foreach ($comps as $comp)
    {
        if (in_array($comp, array('', '.')))
            continue;
        if (
            ($comp != '..') ||
            (!$initial_slashes && !$new_comps) ||
            ($new_comps && (end($new_comps) == '..'))
        )
            array_push($new_comps, $comp);
        elseif ($new_comps)
            array_pop($new_comps);
    }
    $comps = $new_comps;
    $path = implode('/', $comps);
    if ($initial_slashes)
        $path = str_repeat('/', $initial_slashes) . $path;
    if ($path)
        return $path;
    else
        return '.';
}

这将与Python中的os.path.normpath()完全相同PHP的realpath更像是os.path.abspath()或os.path.realpath()@Gordon:PHP的realpath更像是Python的os.path.normpath和os.path.realpath的组合版本。我认为这是最接近
os.path.normpath的版本()
功能。要么是这个,要么没有(至少)内置函数。这取决于OP真正需要什么…不,它不一样。PHP检查本地计算机上存在什么路径。Python只计算路径-这就是我需要的。PHP和Python中的简单测试。PHP:echo realpath('/bin/./lib/');echo realpath('/bin2/./lib2/');-将返回'/lib'和空字符串;Python:print os.path.normpath('/bin/./lib')->/lib,print os.path.normpath('/bin2/./lib2')->/lib2@troex:实际上,对于不存在的路径,PHP应该返回FALSE。不过,我没有看到任何其他PHP内置程序只是规范化路径。