Подтвердить что ты не робот

Попытка получить полный URL-адрес без имени файла в PHP

Я думал, что это будет просто, но я не могу найти переменную массива $_SERVER, у которой есть то, что я ищу.

Скажем, мой url http://example.com/subdirectory/index.php Я хочу получить все, кроме имени файла - http://example.com/subdirectory/.

Я знаю, что я мог бы легко сделать это с помощью некоторых манипуляций с строкой, но я хочу знать, есть ли var массива _server, который мне просто не хватает. Я пробовал всех из них, чтобы посмотреть, что они дают, и я могу получить что-нибудь, НО что я ищу.

4b9b3361

Ответ 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); очень просто.

Я знаю, что я мог бы легко сделать это с помощью некоторых манипуляций с строкой

да. код, который вы должны написать, меньше, чем этот текст вопроса.

но с некоторой мануальной магией он может быть сведен к одной функции.