pathinfo
pathinfo() returns information about path : either an associative array or a string, depending on flags .
Note:
For information on retrieving the current path info, read the section on predefined reserved variables.
Note:
pathinfo() operates naively on the input string, and is not aware of the actual filesystem, or path components such as » .. «.
Note:
On Windows systems only, the \ character will be interpreted as a directory separator. On other systems it will be treated like any other character.
pathinfo() is locale aware, so for it to parse a path containing multibyte characters correctly, the matching locale must be set using the setlocale() function.
Parameters
If present, specifies a specific element to be returned; one of PATHINFO_DIRNAME , PATHINFO_BASENAME , PATHINFO_EXTENSION or PATHINFO_FILENAME .
If flags is not specified, returns all available elements.
Return Values
If the flags parameter is not passed, an associative array containing the following elements is returned: dirname , basename , extension (if any), and filename .
Note:
If the path has more than one extension, PATHINFO_EXTENSION returns only the last one and PATHINFO_FILENAME only strips the last one. (see first example below).
Note:
If the path does not have an extension, no extension element will be returned (see second example below).
Note:
If the basename of the path starts with a dot, the following characters are interpreted as extension , and the filename is empty (see third example below).
If flags is present, returns a string containing the requested element.
Examples
Example #1 pathinfo() Example
$path_parts = pathinfo ( ‘/www/htdocs/inc/lib.inc.php’ );
?php
echo $path_parts [ ‘dirname’ ], «\n» ;
echo $path_parts [ ‘basename’ ], «\n» ;
echo $path_parts [ ‘extension’ ], «\n» ;
echo $path_parts [ ‘filename’ ], «\n» ;
?>
The above example will output:
/www/htdocs/inc lib.inc.php php lib.inc
Example #2 pathinfo() example showing difference between null and no extension
$path_parts = pathinfo ( ‘/path/emptyextension.’ );
var_dump ( $path_parts [ ‘extension’ ]);
?php
$path_parts = pathinfo ( ‘/path/noextension’ );
var_dump ( $path_parts [ ‘extension’ ]);
?>
The above example will output something similar to:
string(0) "" Notice: Undefined index: extension in test.php on line 6 NULL
Example #3 pathinfo() example for a dot-file
The above example will output something similar to:
Array ( [dirname] => /some/path [basename] => .test [extension] => test [filename] => )
Example #4 pathinfo() example with array dereferencing
The flags parameter is not a bitmask. Only a single value may be provided. To select only a limited set of parsed values, use array destructuring like so:
[ ‘basename’ => $basename , ‘dirname’ => $dirname ] = pathinfo ( ‘/www/htdocs/inc/lib.inc.php’ );?php
var_dump ( $basename , $dirname );
?>
The above example will output something similar to:
string(11) "lib.inc.php" string(15) "/www/htdocs/inc"
See Also
- dirname() — Returns a parent directory’s path
- basename() — Returns trailing name component of path
- parse_url() — Parse a URL and return its components
- realpath() — Returns canonicalized absolute pathname
PHP Текущее местоположение скрипта, папки, имя файла
В языке PHP есть несколько полезных констант, которые мы можем применять в построении динамического пути к файлу или папке.
Как в PHP узнать полный путь к файлу или папке
Для начала приведу примеры, что вы получите вызвав соответствующие константы:
echo __FILE__; // /home/bitrix/www/bitrix/modules/main/admin/php_command_line.php echo __DIR__; // /home/bitrix/www/bitrix/modules/main/admin
Мы рассмотрели 2 константы, __FILE__ и __DIR__ для отображения полного пути к текущему файлу и папке (директории). Стоит отметить, что __DIR__ эквивалентен вызову:
echo dirname(__FILE__); // /home/bitrix/www/bitrix/modules/main/admin
dirname – это стандартная функция PHP, которая возвращает родительский каталог. Она применяется как раз для таких ситуаций, когда вам нужно узнать полный путь к файлу без самого файла :). Мне на ум пришла идея, как можно добиться такого же результата (не удивлюсь, если под капотом тоже самое):
echo str_replace(__FILE__, '',__DIR__); // /home/bitrix/www/bitrix/modules/main/admin
Что мы еще можем применить для константы __FILE__? Конечно же отделить путь и получить просто имя файла:
echo basename(__FILE__); // php_command_line.php
basename – функция возвращает последний элемент из пути, который, как правило, и является именем файла. Раз уж мы решили писать функции заменители, давайте рассмотрим наш URL, как массив, разделенный слешами (“/”):
$arPath = explode('/', __FILE__); // Array ( [0] => [1] => home [2] => bitrix [3] => www [4] => bitrix // [5] => modules [6] => main [7] => admin [8] => php_command_line.php
Как видим, последний элемент массива является нашим файлом. Чтобы получить последний элемент массива, не зная его количество, пишем:
$arPath = explode('/', __FILE__); echo $arPath[count($arPath)-1];
Минус 1 потому как отсчет для массивов идет с нуля, но при счете всегда стартует с единицы.
Важно – в некоторых указаниях полного пути вы используете разделители (вышеупомянутые слеши ‘/’). Но, для Windows это «\», для Linux и остальных — «/». Есть такая константа:
Вернет 1 слеш (без кавычек).
Немного закрепим 2 функции, о которых шла речь выше:
str_replace – функция, которая используется для замены в строке. Первый параметр “что ищем”, затем “на что меняем” и последний “где ищем”, в который мы и передали нашу полную строку.
explode – функция, которая делает из строки массив. Но, чтобы функции понять как разбить строку – ей нужно передать “разделитель”, а уже вторым параметром – саму строку.
Как вы заметили, “/home/bitrix/www” – это путь на самом сервере, который можно “вырезать” как раз при помощи str_replace.
Если вам нужно использовать “текущий домен”, то получить его при помощи PHP можно несколькими способами. Один из них:
echo $_SERVER['SERVER_NAME']; // site.com.ua
Надеюсь вам эта тема была интересна. Пишите в комментариях как вам формат, и нужен ли он вообще. А то в последнее время только битрикс да битрикс :).
Как определить текущий url сайта и директории исполняющего файла в php
Если вы программируете на php, то вам обязательно придется столкнуться с такими понятиями , как относительные и абсолютные ссылки, директории скриптов и т.п.
Начнем с простого, а именно определения текущей страницы сайта.
Сделать это можно с помощью элемента супермассива: $_SERVER[‘REQUEST_URI’]. Пример: echo $_SERVER[‘REQUEST_URI’]; — выдаст ссылку текущей страницы сразу после домена со всеми GET параметрами, если они есть.
При методах include или require в php появляется необходимость использовать либо относительные пути директорий, либо абсолютные. Первые задаются относительно папки исполняющего скрипта. Например, есть файл index.php в папке sait. Нам нужно инклудить файл msg.php, который находится в этой же папке — тогда мы будем использовать команду include(‘msg.php’); Если бы msg.php находился в папке выше, то include(‘../msg.php’);
Что касается абсолютных путей, то они должны идти от корневой папки сервера. Чтобы правильно подключить файл на include используйте следующую конструкцию:
Здесь $_SERVER[‘DOCUMENT_ROOT’] подключит путь от корневой папки сервера (например: /var/www/u010381422/data/www/вашсайт.ру), а /sait/msg.php — часть ссылки, которую мы можем доподключить вручную.
Если подключения от корневой директории нужно производить часто, то рекомендую использовать константу:
define(‘ROOT’, $_SERVER[‘DOCUMENT_ROOT’]);
include(ROOT.»/sait/msg.php»);
Константы __FILE__ и __DIR__ в php
__FILE__ Вы можете использовать полезную константу __FILE__ для определения полного пути от сервера к вашему исполняющему файлу с выводом его имени и расширением. Например, если в нашем примере мы напишем echo __FILE__; — то получим полный путь к файлу, от которого запущена эта команда: /var/www/u010381422/data/www/вашсайт.ру/sait/msg.php (естественно, у вас будет другой путь директории).
__DIR__ В отличие от __FILE__ константа __DIR__ показывает только директорию исполняющего файла без его имени. Например: echo __DIR__; (выведет: /var/www/u010381422/data/www/вашсайт.ру/sait)
Если подвести итог, то создайте любой php файл и разместить в нем код:
echo $_SERVER[‘REQUEST_URI’]; echo ‘
‘; //Текущая ссылка файла
echo __FILE__; echo ‘
‘; //Полный путь и имя текущего файла — /var/www/u010381422/data/www/вашсайт.ру/sait/msg.php
echo __DIR__; echo ‘
‘; //Директория файла (эквивалент: dirname(__FILE__) ) — /var/www/u010381422/data/www/вашсайт.ру/sait
?>
После запуска такого файла, вы увидите все параметры индивидуальные для вашего сервера.