note 112367 added to function.realpath

From: Date: Fri, 07 Jun 2013 11:37:14 +0000
Subject: note 112367 added to function.realpath
Groups: php.notes 
Request: Send a blank email to php-notes+get-195098@lists.php.net to get a copy of this message
Needed a method to normalize a virtual path that could handle .. references that go beyond the initial folder reference. So I created the following. <?php function normalizePath($path) { $parts = array();// Array to build a new path from the good parts $path = str_replace('\\', '/', $path);// Replace backslashes with forwardslashes $path = preg_replace('/\/+/', '/', $path);// Combine multiple slashes into a single slash $segments = explode('/', $path);// Collect path segments $test = '';// Initialize testing variable foreach($segments as $segment) { if($segment != '.') { $test = array_pop($parts); if(is_null($test)) $parts[] = $segment; else if($segment == '..') { if($test == '..') $parts[] = $test; if($test == '..' || $test == '') $parts[] = $segment; } else { $parts[] = $test; $parts[] = $segment; } } } return implode('/', $parts); } ?> Will convert /path/to/test/.././..//..///..///../one/two/../three/filename to ../../one/three/filename ---- Server IP: 69.147.83.199 Probable Submitter: 98.151.158.232 ---- Manual Page -- http://php.net/manual/en/function.realpath.php Edit -- https://master.php.net/note/edit/112367 Del: integrated -- https://master.php.net/note/delete/112367/integrated Del: useless -- https://master.php.net/note/delete/112367/useless Del: bad code -- https://master.php.net/note/delete/112367/bad+code Del: spam -- https://master.php.net/note/delete/112367/spam Del: non-english -- https://master.php.net/note/delete/112367/non-english Del: in docs -- https://master.php.net/note/delete/112367/in+docs Del: other reasons-- https://master.php.net/note/delete/112367 Reject -- https://master.php.net/note/reject/112367 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#195098) next »