Существует ли функция PHP, эквивалентная ОС Python.путь.normpath ()?
Существует ли функция PHP, эквивалентная Python os.path.normpath()
?
Или как я могу получить точно такую же функциональность в PHP?
2 ответа:
Вот мой 1: 1 переписанный метод normpath () из Python posixpath.py в PHP:
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 '.'; }
Это будет работать точно так же, как и os.путь.normpath() в Python
Да,
realpath
команда вернет нормализованный путь. Это похоже на комбинированную версию Pythonos.path.normpath
иos.path.realpath
.Однако он также разрешит символические ссылки. Я не знаю, что бы ты делала, если бы не хотела такого поведения.