Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpdeclare(strict_types=1);namespace League\Flysystem;class WhitespacePathNormalizer implements PathNormalizer{public function normalizePath(string $path): string{$path = str_replace('\\', '/', $path);$this->rejectFunkyWhiteSpace($path);return $this->normalizeRelativePath($path);}private function rejectFunkyWhiteSpace(string $path): void{if (preg_match('#\p{C}+#u', $path)) {throw CorruptedPathDetected::forPath($path);}}private function normalizeRelativePath(string $path): string{$parts = [];foreach (explode('/', $path) as $part) {switch ($part) {case '':case '.':break;case '..':if (empty($parts)) {throw PathTraversalDetected::forPath($path);}array_pop($parts);break;default:$parts[] = $part;break;}}return implode('/', $parts);}}