Böyle bir dizeyi ayrıştırmak için PHP bir dahili yolu var: '.... / Yol / / / / yukarı / birdosya.txt'

2 Cevap php

Yani böyle bir dize var ki, bir yolun bu kadar

$path = '/path/to/../../up/something.txt';

Bunu ayrıştırmak ve dizin ups (.. /) olmadan bir URL ile gelip PHP yerleşik bir yolu var mı?

Örneğin

$path = parsePath('/path/to/../../up/something.txt'); // /up/something.txt

2 Cevap

realpath($path);

Docs

PHP'nin realpath() serin, ama ne dosya sistemine erişmek olmadan onu anlamaya isterseniz?

I-../ ve gerçek yol hesaplanan gibi bir yol ile dönebilir Bu işlevi yazdım.

Muhtemelen tüm yol komutları işlemek, yani ben başka uygulamak gerektiğini düşünüyorsanız bana izin vermiyor.

public function resolvePath($path) {

    while (strstr($path, '../')) {
        $path = preg_replace('/\w+\/\.\.\//', '', $path);
    }

    return $path;

}

Bu ödünç regex user contributed note.