如何转换包含 .遍历到规范路径,在 PHP 中


How to convert a path containing .. traversals to a canonical path, in PHP?

  //CONVERT INPUT TO OUTPUT:
  // input => /var/www/../html/../a/data/
  // output => /var/a/data/

有没有比这更好的解决方案来创建通往该位置的真实路径?

$string = "/var/www/../html/../a/data/";
$str = explode('/', $string);
if ($str[0] == "")
    array_shift($str);
$max = sizeof($str);
for ($i = 0; $i < $max; $i++){
    $str[$i] = "/" . $str[$i];
    if (strpos($str[$i], "..")){
        unset($str[$i]);
        unset($str[$i-1]);
    }
}
echo $string = implode($str);

假设允许使用核心PHP函数,那么怎么样?

<?php
echo realpath('/var/www/../html/../a/data/');