Example #1
0
 /**
  * Parses tildes and environment variables in paths.
  *
  * @param string $path
  * @return string
  */
 public static function expandPath($path)
 {
     if (preg_match('#^~[\\/]#', $path)) {
         return self::getUserDirectory() . substr($path, 1);
     }
     return preg_replace_callback('#^(\\$|(?P<percent>%))(?P<var>\\w++)(?(percent)%)(?P<path>.*)#', function ($matches) {
         // Treat HOME as an alias for USERPROFILE on Windows for legacy reasons
         if (Platform::isWindows() && $matches['var'] == 'HOME') {
             return (getenv('HOME') ?: getenv('USERPROFILE')) . $matches['path'];
         }
         return getenv($matches['var']) . $matches['path'];
     }, $path);
 }