Получить имя хоста по заданному URL

1

как получить имя хоста от ниже Пример.

I/P: https://stackoverflow.com/users/login | O/P: stackoverflow.com

I/P: stackoverflow.com/users/login | O/P: stackoverflow.com

I/P: /users/login | O/P: (возвращает пустую строку)

Я проверил функцию parse_url, но не возвратил то, что мне нужно. Поскольку я начинаю работать на PHP, мне было сложно. Если у вас есть какие-либо идеи, ответьте.

  • 0
    Вам нужно создать свой собственный анализатор URL.
  • 0
    Я благодарю Бабака. Я старался изо всех сил. Но не получил должного выхода. Плз любой дай мне правильную функцию!
Показать ещё 2 комментария
Теги:
url
html-parsing
url-parsing
urlparse

4 ответа

1
Лучший ответ

вы можете попробовать это

<?php  

function getHost($Address) { 
   $parseUrl = parse_url(trim($Address)); 
   return trim(isset($parseUrl['host']) ? $parseUrl['host'] : array_shift(explode('/', $parseUrl['path'], 2))); 
} 

echo getHost('http://stackoverflow.com/users/login');
1

Это должно работать во всех типах доменных имен

$url = " https://stackoverflow.com/users/login";
// trailing slash for edge case, it will return empty string for strstr function regardless
$test = str_replace(array("http://", "https://"), "", $url) . "/";
$domain = strstr($test, "/", true);
echo $domain; // stackoverflow.com

$domain будет пустой строкой, если домен не найден

  • 0
    Я благодарю Эндрю. Это работает фын. большое спасибо.
  • 0
    @SanKaRan милости просим :)
1

Вы можете попробовать это -

$url = ' https://stackoverflow.com/users/login';

function return_host($url)
{
  $url = str_replace(array('http://', 'https://'), '', $url); // remove protocol if present
  $temp = explode('/', $url); // explode the url by /
  if(strpos($temp[0], '.com')) { // check the url part
     return $temp[0];
  }
  else {
     return false;
  }
}

echo return_host($url);

Обновить

Для других типов доменов просто измените чек -

if(strpos($temp[0], '.com') || strpos($temp[0], '.org') || strpos($temp[0], '.net'))

DEMO

  • 0
    Будет ли это работать с .net, .org т. Д.?
  • 0
    Нет.! это работает только для доменов .com.
Показать ещё 5 комментариев
0

Вы можете использовать регулярные выражения, как описано в этом решении: Получение частей URL (Regex)

Или вы можете использовать функцию PHP для этого: http://php.net/manual/en/function.parse-url.php

Я бы предложил второй (RegExes может быть сложным, если вы точно не знаете, как они работают).

  • 0
    Я попробовал parse-url. но из этой встроенной функции я не получил правильного вывода.
  • 0
    ты можешь вставить свой код? Я знаю, что это работает, так что там может быть что-то не так ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню