2010-01-26 4 views
1

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

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

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

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

ответ

2

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

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

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

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


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

+0

Есть ли способ сравнить google.com с google.co.uk и, тем не менее, вернуть true? – user220755

1

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

<?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.

Смежные вопросы