Я думал, что это будет просто, но я не могу найти переменную массива $_SERVER
которой есть то, что я ищу.
Скажем, мой url – http://example.com/subdirectory/index.php
Я хочу получить все, кроме имени файла – http://example.com/subdirectory/
.
Я знаю, что я мог бы легко сделать это с помощью некоторых манипуляций с строкой, но я хочу знать, есть ли var массива _server
который я просто отсутствую. Я пробовал всех из них, чтобы посмотреть, что они дают, и я могу получить что угодно, НО что я ищу.
Их не будет, потому что это не полезный атрибут для отслеживания. Если текущий скрипт – это нечто иное, чем index.*
То он не вернет правильный URL для текущего скрипта.
Однако это может привести к тому, что вы хотите:
echo '//'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
Редактировать:
Кроме того, помимо установки онлайн-инструментария поиска php.net для Firefox и настройки его с помощью ключевого слова поиска (которое позволит вам подтянуть документацию по глобальному $_SERVER
, введя в вашу строку URL-адреса нечто вроде « php $_server
» ), вы также должны знать, что var_dump()
и print_r()
позволяют выводить полное содержимое любой переменной, включая массивы и объекты. Это очень полезно для отладки.
В вашем случае правильная обработка строк – лучшее решение.
Например:
substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '/') + 1);
Для вас нет определенных переменных.
Вы можете использовать код ниже, чтобы получить полный базовый URL:
// Base folder url $myBase = ( (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')) ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
но, надеюсь, в большинстве случаев вам не потребуется полностью использовать все:
// Base folder server root path $myBase = dirname($_SERVER['PHP_SELF']);
Просто будьте осторожны, если вы используете какую-то систему маршрутов (mod_rewrite).
вы можете использовать dirname (), чтобы получить путь к URL-адресу.
Кажется, я не могу найти переменную массива $ _SERVER, у которой есть то, что я ищу.
потому что это вымышленная строка, существующая только в адресной строке браузера.
Части отправляются на сервер.
Я хочу знать, есть ли var массива _server
Это очень легко понять. просто print_r($_SERVER);
действительно простой.
Я знаю, что я мог бы легко сделать это с помощью некоторых строковых манипуляций
Да. код, который вы должны написать, меньше, чем этот текст вопроса.
но с некоторой мануальной магией он может быть сведен к одной функции.