2015-11-16 4 views
1

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

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

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

I/P:/пользователи/логин | O/P: (return empty string)

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

+0

Вы должны создать свой собственный настраиваемый анализатор URL. – Babak

+0

ya thanks babak. Я старался изо всех сил. Но не получил правильную выходную информацию. Plz любой дает мне правильную функцию! –

+0

Вы пробовали: '$ _SERVER [" HTTP_HOST "]' или '$ _SERVER [" SERVER_NAME "]', но возвращает имя сервера – Thamilan

ответ

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'; 

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); 

Update

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

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

DEMO

+0

Будет ли это работать с '.net, .org' и т. д.? – Karan

+0

Нет.! он работает только для доменов .com. –

+0

@ Каран проверить обновление. –

0

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

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

Я хотел бы предложить вторые (регулярные выражения могут быть сложны, если вы не знаете, как именно они работают).

+0

Я пробовал parse-url. но из этой встроенной функции я не получил надлежащего вывода. –

+0

вы можете вставить свой код? Я знаю, что это работает, поэтому там может быть что-то не так ... –

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

ya спасибо Andrew. Это работает fyn. большое спасибо. –

+0

@SanKaRan приветствую :) – Andrew