PHP 8.3.4 Released!

pathinfo

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

pathinfoBir dosya yolu hakkında bilgi döndürür

Açıklama

pathinfo(string $yol, int $seçenekler = PATHINFO_ALL): array|string

pathinfo() işlevi belirtilen seçeneklere bağlı olarak, belirtilen yol hakkında bilgi içeren bir ilişkisel dizi ya da bir dizge döndürür.

Bilginize:

Geçerli dosya yolu bilgisinin alınması hakkında daha ayrıntılı bilgi edinmek için Öntanımlı Değişkenler bölümü okunabilir.

Bilginize:

pathinfo() safça girdi dizgesi üzerinde çalışır, dosya sisteminden ve ".." gibi bileşenlerden haberi yoktur.

Bilginize:

Yalnızca Windows sistemlerinde, \ karakteri bir dizin ayırıcı olarak yorumlanır. Diğer sistemlerde ise herhangi bir karakter gibi ele alınır.

Dikkat

pathinfo() yereli de bilmez, bundan dolayı çok baytlı karakterler içeren dosya yollarından doğru bileşeni ayırabilmesi için eşleşen yerelin setlocale() işlevi kullanılarak atanması gerekir.

Bağımsız Değişkenler

yol

Bilgi toplanacak yol.

seçenekler

İsteğe bağlı seçenekler bağımsız değişkeninde hangi bileşenlerin döndürüleceğini PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION ve PATHINFO_FILENAME seçeneklerinin birleşimi olarak belirtebilirsiniz. Bir değer belirtilmezse tüm bileşenler döndürülür.

Dönen Değerler

seçenekler bağımsız değişkeni atlanırsa dönen ilişkisel dizi şu bileşenleri içerir: dirname (dizin ismi), basename (uzantısız isim), extension (uzantı) ve filename (dosya ismi).

Bilginize:

yol birden fazla uzantı içeriyorsa PATHINFO_EXTENSION seçeneği ile yalnızca sonuncusu dönerken PATHINFO_FILENAME seçeneğinde ise sadece sonuncu uzantı kırpılır. Aşağıdaki örneğe bakınız.

Bilginize:

yol bir uzantı içermiyorsa dönen dizi extension elemanını içermez. Aşağıdaki örneğe bakınız.

Bilginize:

yol'un basename elemanı bir nokta ile başlıyorsa, noktadan sonrası extension elemanına aktarılır, filename elemanı ise boş kalır. Aşağıdaki örneğe bakınız.

Eğer seçenekler belirtilirse ve tüm bileşenler istenmemişse işlev bir ilişkisel dizi değil, bir dizge döndürür.

Örnekler

Örnek 1 - pathinfo() örneği

<?php
$path_parts
= pathinfo('/www/htdocs/inc/lib.inc.php');

echo
$path_parts['dirname'], "\n";
echo
$path_parts['basename'], "\n";
echo
$path_parts['extension'], "\n";
echo
$path_parts['filename'], "\n";
?>

Yukarıdaki örneğin çıktısı:

/www/htdocs/inc
lib.inc.php
php
lib.inc

Örnek 2 - Uzantısız ve boş uzantılı farkını gösteren pathinfo() örneği

<?php
$path_parts
= pathinfo('/yol/bosuzanti.');
var_dump($path_parts['extension']);
$path_parts = pathinfo('/yol/yokuzanti');
var_dump($path_parts['extension']);
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

string(0) ""

Notice: Undefined index: extension in test.php on line 6
NULL

Örnek 3 - pathinfo() ve uzantı-dosya

<?php
print_r
(pathinfo('/some/path/.test'));
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

Array
(
    [dirname] => /some/path
    [basename] => .test
    [extension] => test
    [filename] =>
)

Örnek 4 - pathinfo() dizi başvurusunu kaldırma örneği

seçenekler bit maskesi değildir. Tek bir değer aktarılabilir. Yalnızca çözümlenmiş değerlerden oluşan sınırlı bir değer kümesini seçmek için dizi yıkımı şu şekilde kullanılabilir:

<?php
['basename' => $basename, 'dirname' => $dirname] = pathinfo('/www/htdocs/inc/lib.inc.php');

var_dump($basename, $dirname);
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

string(11) "lib.inc.php"
string(15) "/www/htdocs/inc"

Ayrıca Bakınız

  • dirname() - Üst dizinin yolunu döndürür
  • basename() - Dosya yolunun ucundaki dosya ismi bileşenini döndürür
  • parse_url() - Bir URL'yi bileşenlerine ayırır
  • realpath() - Normalleştirilmiş mutlak dosya yolunu döndürür

add a note

User Contributed Notes 4 notes

up
41
Lori
5 years ago
Simple example of pathinfo and array destructuring in PHP 7:
<?php
[ 'basename' => $basename, 'dirname' => $dirname ] = pathinfo('/www/htdocs/inc/lib.inc.php');

var_dump($basename, $dirname);

// result:
// string(11) "lib.inc.php"
// string(15) "/www/htdocs/inc"
?>
up
5
urvi
1 year ago
about the path, there are one thing you should note :
On Windows, both slash (/) and backslash (\) are used as directory separator character. In other environments, it is the forward slash (/). (this explain is from basename() function part https://www.php.net/manual/en/function.basename.php)
example:
<?php
$path
= "https://urvidutta.com /a\b\c\filename.pdf";

echo
pathinfo($pdfUrl, PATHINFO_BASENAME); //get basename
//output
//on window: result is filename.pdf
//on Linux: result is a\b\c\filename.pdf (that is may not your expect)

//so in order to get same result in different system. i will do below first.
$path = str_replace($path, '\\', '/'); //convert '\' to '/'
?>
up
13
Pietro Baricco
12 years ago
Use this function in place of pathinfo to make it work with UTF-8 encoded file names too

<?php
function mb_pathinfo($filepath) {
preg_match('%^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$%im',$filepath,$m);
if(
$m[1]) $ret['dirname']=$m[1];
if(
$m[2]) $ret['basename']=$m[2];
if(
$m[5]) $ret['extension']=$m[5];
if(
$m[3]) $ret['filename']=$m[3];
return
$ret;
}
?>
up
10
n0dalus
19 years ago
If a file has more than one 'file extension' (seperated by periods), the last one will be returned.
For example:
<?php
$pathinfo
= pathinfo('/dir/test.tar.gz');
echo
'Extension: '.$pathinfo['extension'];
?>
will produce:
Extension: gz

and not tar.gz
To Top