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;
}
?>pathinfo
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
pathinfo
Референца за `function.pathinfo.php` со подобрена типографија и навигација.
pathinfo
(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)
pathinfo — Враќа информации за патеката до датотека
= NULL
pathinfo() враќа информации за
path: или асоцијативен низ или стринг, во зависност од flags.
Забелешка:
За информации за добивање на тековните информации за патеката, прочитајте го делот за претходно дефинирани резервирани променливи.
Забелешка:
pathinfo() работи наивно на влезната низа и не е свесен за вистинскиот систем на датотеки, или компоненти на патеката како што се "
..".
Забелешка:
Само на системи Windows,
\карактерот ќе се толкува како разделувач на директориуми. На други системи ќе се третира како кој било друг карактер.
pathinfo() е свесен за локалот, така што за да парсира патека што содржи повеќебајтни карактери правилно, мора да се постави соодветниот локал користејќи setlocale() function.
Параметри
path-
Патеката што треба да се парсира.
flags-
Ако е присутен, специфицира специфичен елемент што треба да се врати; еден од
PATHINFO_DIRNAME,PATHINFO_BASENAME,PATHINFO_EXTENSIONorPATHINFO_FILENAME.Враќа
flagsне е специфициран, враќа сите достапни елементи.
Вратени вредности
Ако flags параметарот не е предаден, асоцијативен array што ги содржи следните елементи се враќа:
dirname, basename,
extension (ако има), и filename.
Забелешка:
Ако
pathима повеќе од еден екстензија,PATHINFO_EXTENSIONвраќа само последната иPATHINFO_FILENAMEсамо ја отстранува последната. (види првиот пример подолу).
Забелешка:
Ако
pathнема екстензија, немаextensionелементот ќе биде вратен (види вториот пример подолу).
Забелешка:
Ако
basenameодpathзапочнува со точка, следните знаци се толкуваат какоextensionФункциитеfilenameе празно (види го третиот пример подолу).
Враќа flags е присутен, враќа
string што го содржи бараниот елемент.
Примери
Пример #1 pathinfo() Пример
<?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";
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
/www/htdocs/inc lib.inc.php php lib.inc
Пример #2 pathinfo() пример што покажува разлика помеѓу null и нема екстензија
<?php
$path_parts = pathinfo('/path/emptyextension.');
var_dump($path_parts['extension']);
$path_parts = pathinfo('/path/noextension');
var_dump($path_parts['extension']);
?>Горниот пример ќе прикаже нешто слично на:
string(0) "" Notice: Undefined index: extension in test.php on line 6 NULL
Пример #3 pathinfo() пример за датотека со точка
<?php
print_r(pathinfo('/some/path/.test'));
?>Горниот пример ќе прикаже нешто слично на:
Array
(
[dirname] => /some/path
[basename] => .test
[extension] => test
[filename] =>
)
Пример #4 pathinfo() пример со дереференцирање на низа
На flags параметарот не е битно маскирање. Може да се обезбеди само една вредност. За да изберете само ограничен сет на анализирани вредности, користете деструктурирање на низа вака:
<?php
['basename' => $basename, 'dirname' => $dirname] = pathinfo('/www/htdocs/inc/lib.inc.php');
var_dump($basename, $dirname);
?>Горниот пример ќе прикаже нешто слично на:
string(11) "lib.inc.php" string(15) "/www/htdocs/inc"
Види Исто така
- dirname() - Враќа патека на родителска директорија
- basename() - Враќа последна компонента на името на патеката
- parse_url() - Парсирај URL и врати ги неговите компоненти
- realpath() - Враќа последна компонента на името на патеката
Белешки од корисници 3 белешки
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 '/'
?>