パスのような文字列があるとします
$path = '/path/to/../../up/something.txt';
それを解析し、ディレクトリ ups (../) なしで URL を取得する方法が PHP に組み込まれていますか?
例えば
$path = parsePath('/path/to/../../up/something.txt'); // /up/something.txt
パスのような文字列があるとします
$path = '/path/to/../../up/something.txt';
それを解析し、ディレクトリ ups (../) なしで URL を取得する方法が PHP に組み込まれていますか?
例えば
$path = parsePath('/path/to/../../up/something.txt'); // /up/something.txt
realpath($path);
PHPrealpath()
はクールですが、ファイルシステムにアクセスせずに理解したい場合はどうすればよいでしょうか?
../
などで計算されたパスを実際のパスに戻すことができるこの関数を作成しました。
おそらくすべてのパス コマンドを処理できるわけではないので、別のコマンドを実装する必要があると思われる場合はお知らせください。
public function resolvePath($path) {
while (strstr($path, '../')) {
$path = preg_replace('/\w+\/\.\.\//', '', $path);
}
return $path;
}
このユーザーから借用した正規表現は、ノートに投稿されています。