Сравните домены в php - PullRequest
       4

Сравните домены в php

1 голос
/ 26 января 2010

Я написал небольшой скрипт с URL-адресом (например, code.google.com/ajax/123/1235/214). Скажу вам, что фактический домен: code.google.com

Когда это сравнивается с code.google.com, оно возвращает true, конечно, я хочу, чтобы оно возвращало true, когда оно сравнивается с (чем угодно) .google.com Итак, я хочу, чтобы он возвращал true всякий раз, когда фактический домен одинаков независимо от поддоменов, как это сделать?

(Это НЕ домашний вопрос, это проект, над которым я работаю, поэтому, пожалуйста, предоставьте как можно больше помощи)

(если вам нужна дополнительная информация для понимания проблемы, пожалуйста, напишите комментарий, и я немедленно предоставлю дополнительную информацию)

Ответы [ 2 ]

2 голосов
/ 26 января 2010

Решением может быть использование чего-то вроде parse_url для извлечения части host вашего URL (это, вероятно, самый простой способ получить эту информацию) .

Затем вы можете explode на этом хосте, используя '.' в качестве разделителя, получить массив, содержащий компоненты URL (например, у вас будет array('code', 'google', 'com'))

И, наконец, сравнивайте только последние два элемента массива для каждого URL.

Таким образом, вы бы сравнили 'google' и 'com' с информацией из второго URL.


Я полагаю, что просто использование пары (более простых) сравнений строк может работать в некоторых случаях; но не забывайте такие случаи, как 'www.mywebsite.com' и 'subdomain.website.com' - просто пример, показывающий, что сравнения конца доменных имен недостаточно ^^

1 голос
/ 26 января 2010

Может использоваться некоторая проверка ошибок, но вы можете сделать что-то вроде этого:

<?php

function url_belongs_to_domain($url, $domain){
    $url_domain = parse_url($url, PHP_URL_HOST);

    return preg_match('/' . preg_quote($domain, '/') . '$/i', $url_domain)==1;
}

var_dump( url_belongs_to_domain('http://code.google.com/ajax/123/1235/214', 'google.com') );
var_dump( url_belongs_to_domain('http://code.google.com/ajax/123/1235/214', 'code.google.com') );
var_dump( url_belongs_to_domain('http://code.google.com/ajax/123/1235/214', 'www.google.com') );
var_dump( url_belongs_to_domain('http://www.google.com/ajax/123/1235/214', 'google.com') );
var_dump( url_belongs_to_domain('http://www.google.com/ajax/123/1235/214', 'code.google.com') );
var_dump( url_belongs_to_domain('http://www.google.com/ajax/123/1235/214', 'www.google.com') );

?>

bool(true)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)

Имейте в виду, что для точного определения доменов верхнего уровня требуется проверка по списку, поскольку он не следует никаким правилам: в www.google.com это google.com , в www.google.co.uk это google.co.uk .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...