Intereting Posts
Функция электронной почты php не получает электронные письма Какой обмен сообщениями об ошибках я могу вставить в этот скрипт, чтобы выяснить проблему Любой способ изменить URL-адрес заголовка без перезагрузки? Лучший способ сделать электронную почту html, отправляя через php? Как перенаправить на другой URL-адрес на основе ролей в symfony 2 Перестановка строки php Как обеспечить скоринг в флеш-игре Laravel правильно определяет компоновку по умолчанию от контроллера Проводка массива с использованием cURL в терминале как заменить адрес электронной почты из html innertext Как я могу получить адрес электронной почты пользователя и имя пользователя из кнопки входа в facebook? Выполнение SOAP-вызова в PHP и установка версии SSL Пропустить модельный аксессуар Есть ли бесплатный сайт для хранения кода (php, javascript, css) в Интернете? Неверная последовательность UTF-8

PHP, как получить базовый домен / url?

function url(){ if(isset($_SERVER['HTTPS'])){ $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http"; } else{ $protocol = 'http'; } return $protocol . "://" . $_SERVER['HTTP_HOST']; } 

Например, с помощью функции выше, она отлично работает, если я работаю с одним и тем же каталогом, но если я создам подкаталог и работаю в нем, он также даст мне местоположение вспомогательного каталога. Я просто хочу example.com но он дает мне example.com/sub если я работаю в папке sub . Если я использую основной каталог, функция работает нормально. Есть ли альтернатива $_SERVER['HTTP_HOST'] ?

Или как я могу исправить свою функцию / код, чтобы получить только основной URL? Благодарю.

Используйте SERVER_NAME .

 echo $_SERVER['SERVER_NAME']; //Outputs www.example.com 

Вы можете использовать parse_url() PHP

 function url($url) { $result = parse_url($url); return $result['scheme']."://".$result['host']; } 
 /** * Suppose, you are browsing in your localhost * http://localhost/myproject/index.php?id=8 */ function getBaseUrl() { // output: /myproject/index.php $currentPath = $_SERVER['PHP_SELF']; // output: Array ( [dirname] => /myproject [basename] => index.php [extension] => php [filename] => index ) $pathInfo = pathinfo($currentPath); // output: localhost $hostName = $_SERVER['HTTP_HOST']; // output: http:// $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https'?'https':'http'; // return: http://localhost/myproject/ return $protocol.'://'.$hostName.$pathInfo['dirname']."/"; } 

Используйте parse_url() следующим образом:

 function url(){ if(isset($_SERVER['HTTPS'])){ $protocol = ($_SERVER['HTTPS'] && $_SERVER['HTTPS'] != "off") ? "https" : "http"; } else{ $protocol = 'http'; } return $protocol . "://" . parse_url($_SERVER['REQUEST_URI'], PHP_URL_HOST); } 

Вот еще один более короткий вариант:

 function url(){ $pu = parse_url($_SERVER['REQUEST_URI']); return $pu["scheme"] . "://" . $pu["host"]; } 

Самое короткое решение:

 $domain = parse_url('http://google.com', PHP_URL_HOST); 

Попробуйте следующее:

 $uri = $_SERVER['REQUEST_URI']; // $uri == example.com/sub $exploded_uri = explode('/', $uri); //$exploded_uri == array('example.com','sub') $domain_name = $exploded_uri[1]; //$domain_name = 'example.com' 

Я надеюсь, что это поможет вам.

Шаг 1

Сначала обрезайте обратную косую черту (/) с URL. Например, если URL-адрес – http://www.google.com/, то результирующий URL-адрес будет http://www.google.com.

 $url= trim($url, '/'); 

Шаг 2

Если схема не включена в URL-адрес, добавьте ее. Например, если URL-адрес http://www.google.com, то результирующий URL-адрес будет http://www.google.com.

 if (!preg_match('#^http(s)?://#', $url)) { $url = 'http://' . $url; } 

Шаг 3

Получите части URL-адреса.

 $urlParts = parse_url($url); 

Шаг 4

Теперь удалите www. из URL-адреса

 $domain = preg_replace('/^www\./', '', $urlParts['host']); 

Ваш конечный домен без http и www теперь хранится в переменной $ domain.

Примеры:

http://www.google.com => google.com

https://www.google.com => google.com

http://www.google.com => google.com

http://google.com => google.com