2010-04-19 22 views

cevap

2

Evet, realpath komutu normalleştirilmiş bir yol döndürecektir. Python'un os.path.normpath ve os.path.realpath'un birleştirilmiş sürümüne benzer. Bununla birlikte, sembolik bağları da çözecektir. Bu davranışı istemediysen ne yapacağından emin değilim. PHP'de Python'un posixpath.py gelen normpath() metodunun 1 yeniden yazma: Bu Python

yılında os.path.normpath() olarak tam aynı şekilde çalışacaktır

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 '.'; 
} 

İşte

+0

PHP'nin realpath'i, os.path.abspath() veya os.path.realpath() – VolkerK

+0

@ Gordon'un eşdeğeri gibi olacaktır. PHP: realpath, Python'un os.path.normpath ve os.path'in birleştirilmiş halidir. realpath. – Powerlord

+0

Sanırım bu, os.path.normpath() işlevine en yakın olanıdır. Ya bu ya da bunun için en azından yerleşik işlev yoktur. OP'nin gerçekten neye ihtiyacı olduğuna bağlı ... –

İlgili konular