PHP: Получить текущее имя файла индекса каталога - PullRequest
0 голосов
/ 25 декабря 2018

Я не должен формулировать этот вопрос правильно, потому что я не мог найти ответ на этот вопрос, но, конечно, он задавался раньше.Как получить текущее имя файла из URL, если это индексный файл каталога?

Т.е. получится index.html, если я нахожусь на www.example.com/index.html

 $url = basename($_SERVER['REQUEST_URI']);  

Но это не сработает, если я нахожусь на www.example.com.Единственное, что я до сих пор придумал, это что-то вроде этого:

 $url = basename($_SERVER['REQUEST_URI']);

 if($url == "") {
   $filename = "index.html";
 }

Но это, очевидно, плохое решение, потому что я на самом деле могу быть на index.htm или index.php.Есть ли способ определить это точно?

Ответы [ 4 ]

0 голосов
/ 25 декабря 2018

Вы можете найти последнее вхождение косой черты /, используя strrchr(), и просто извлечь остальные, используя substr().Необязательный параметр в substr() указывает, с чего начать.С одним мы пропускаем косую черту /.Если вы хотите сохранить его, просто установите параметр на 0.

echo substr( strrchr( "http://example.com/index.html" , "/" ) , 1 ) ; // outputs index.html

РЕДАКТИРОВАТЬ: Учитывая, что не каждый сервер будет предоставлять $_SERVER сущности, мой подход может быть более надежным.То есть, если URL, который вы передаете на strrchr(), является надежным.В любом случае, убедитесь, что вы тестируете различные выходные данные $_SERVER или ваши пути, которые вы указываете.

0 голосов
/ 25 декабря 2018

Это один из других методов.

$url = basename($_SERVER['REQUEST_URI']);
$urlArray = explode("/",$url));
$urlArray = array_reverse($urlArray);
echo $urlArray[0];
0 голосов
/ 25 декабря 2018

К сожалению, записи в массиве $_SERVER не всегда могут быть доступны вашему серверу.Некоторые могут быть опущены, некоторые нет.Тем не менее, с небольшим тестированием, вы можете легко узнать, что ваш сервер выведет для этих записей.На моих серверах (обычно Apache) я нахожу, что $_SERVER['DOCUMENT_ROOT'] обычно дает мне базовый URI, который я ищу.Это также хорошо работает для меня в производственной среде, в которой я работаю (XAMPP).Так как мой URI будет иметь локальный корневой каталог.Я видел, как люди поощряли DOCUMENT_ROOT раньше в этой ситуации.Вы можете прочитать все о $_SERVER массиве здесь .

. В этом примере я получаю следующие результаты:

echo $_SERVER['DOCUMENT_ROOT'] ; // outputs http://example.com

Если вы работаете на производствеВ этой среде это очень полезно, потому что вам не придется изменять свои URL при запуске:

echo $_SERVER['DOCUMENT_ROOT'] ; // outputs C:/xampp/htdocs/example

'DOCUMENT_ROOT' Корневой каталог документа, в котором выполняется текущий скрипт, как определено вфайл конфигурации сервера.

0 голосов
/ 25 декабря 2018

$ _ SERVER ['SCRIPT_FILENAME'] определит полный путь к текущему исполняемому файлу PHP.А $ _SERVER ['SCRIPT_NAME'] возвращает только имя файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...