Попытка получить полный URL-адрес без имени файла в PHP
Я думал, что это будет просто, но я не могу найти переменную массива $_SERVER
, у которой есть то, что я ищу.
Скажем, мой url http://example.com/subdirectory/index.php
Я хочу получить все, кроме имени файла - http://example.com/subdirectory/
.
Я знаю, что я мог бы легко сделать это с помощью некоторых манипуляций с строкой, но я хочу знать, есть ли var массива _server
, который мне просто не хватает. Я пробовал всех из них, чтобы посмотреть, что они дают, и я могу получить что-нибудь, НО что я ищу.
Ответы
Ответ 1
Не будет одного, потому что это не полезный атрибут для отслеживания. Если текущий script является чем-то отличным от index.*
, тогда он не вернет правильный URL для текущего script.
Однако это может привести к тому, что вы хотите:
echo '//'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);
Edit:
Кроме того, помимо установки онлайн-инструмента поиска вручную php.net для Firefox и настройки его с помощью ключевого слова поиска (которое позволит вам подтянуть документацию на глобальном уровне $_SERVER
, введя в URL-адрес что-то вроде "php $_server
" bar), вы также должны знать, что var_dump()
и print_r()
позволяют выводить полное содержимое любой переменной, включая массивы и объекты. Это очень полезно для отладки.
Ответ 2
В вашем случае наилучшим решением является управление строкой.
Пример:
substr($_SERVER['REQUEST_URI'], 0, strrpos($_SERVER['REQUEST_URI'], '/') + 1);
Ответ 3
Нет определенных переменных для того, что вы хотите.
Вы можете использовать код ниже, чтобы получить полный базовый 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).
Ответ 4
вы можете использовать dirname(), чтобы получить путь к URL-адресу.
Ответ 5
Я не могу найти переменную массива $_SERVER, у которой есть то, что я ищу.
потому что это вымышленная строка, существующая только в адресной строке браузера.
Части отправляются на сервер.
Я хочу знать, существует ли var массива _server
Это очень легко понять. просто print_r($_SERVER);
очень просто.
Я знаю, что я мог бы легко сделать это с помощью некоторых манипуляций с строкой
да. код, который вы должны написать, меньше, чем этот текст вопроса.
но с некоторой мануальной магией он может быть сведен к одной функции.