Как проверить, есть ли в нем URL-адрес страницы или нет с PHP?

В PHP, как я могу проверить, имеет ли текущая страница www в URL-адресе или нет?

Например, если пользователь находится на http://www.example.com/something , как я могу найти, что в URL есть www, а на http://example.com/something , www не находится в URL-адресе?

Вы можете использовать $_SERVER['HTTP_HOST'] чтобы получить свой домен. Теперь, если ваш сайт не использует поддомены, это легко. Просто используйте что-то вроде этого:

 $url1 = "www.domain.com"; $params = explode('.', $url1); if(sizeof($params === 3) AND $params[0] == 'www') { // www exists } 

Обратите внимание, что если ваш массив params имеет 2 элемента, то домен выглядит как этот domain.com и www нет явно. Вы даже можете проверить размер массива $params и решить, существует ли www или нет в зависимости от его размера.

Теперь, если ваш сайт использует поддомены, он становится более сложным. У вас были бы такие сценарии:

 $url1 = "www.domain.com"; $url2 = "www.sub.domain.com"; $url3 = "domain.com"; $url4 = "sub.domain.com"; 

Затем вы снова взорвете каждый URL-адрес и сравните размер и проверьте, является ли первый элемент «www». Но обратите внимание, что ваш поддомен может быть назван www где www будет субдомен: D И тогда он будет выглядеть следующим образом: www.domain.com , и снова, www – поддомен 🙂 Это безумие, я чуть не сошел с ума от этого 🙂

Во всяком случае, для проверки на www когда сайт не использует поддомены, это мир торта. Но чтобы проверить, имеет ли URL-адрес www а ваш сайт использует поддомены, это может быть жестким. Простейшим решением для решения этой проблемы было бы отключить дополнительный домен www , если можно.

Если вам нужна дополнительная помощь, и это не отвечает на ваш вопрос, не стесняйтесь спрашивать. У меня была схожая ситуация, когда пользователи могли создавать свои собственные учетные записи, которые были бы www.user.domain.com , такими как www.user.domain.com , и мне приходилось делать то же самое.

Надеюсь это поможет!

вы можете сделать preg_match это будет:

 if(preg_match('/www/', $_SERVER['HTTP_HOST'])) { echo 'you got www in your adress'; } else { echo 'you don not have www'; } 

вы даже можете сделать это с помощью .htaccess, в зависимости от того, что вы строите выше, будет отлично подходит для обнаружения симплекса.

если вы выберете вариант, Ферди дал сделать чек следующим образом:

 $domain = array_shift(explode(".",$_SERVER['HTTP_HOST'])); if(in_array('www', $domain)) { echo 'JUP!'; } 

Вы уже знаете URL? Затем сделайте следующее:

 <?php $parsed = parse_url("http://www.example.com/something"); $hasWww = strpos($parsed['host'], "www.") === 0; var_dump($hasWww); 

В противном случае возьмите

  strpos($_SERVER['HTTP_HOST'], "www.") === 0 
 array_shift(explode(".",$_SERVER['HTTP_HOST'])); 

Должен работать, а затем проверить массив на наличие www. Если вы просто пытаетесь удалить или принудительно использовать www, тогда правило .htaccess намного превосходит PHP для этой работы.

Из руководства

$_SERVER['HTTP_HOST']

Содержимое заголовка Host: из текущего запроса, если таковой имеется.

$_SERVER['SERVER_NAME']

Имя хоста сервера, под которым выполняется текущий скрипт. Если скрипт запущен на виртуальном хосте, это будет значение, определенное для этого виртуального хоста.

Существует так много способов проверить, содержит ли www или нет.

один из способов:

 if(strpos($_SERVER['HTTP_HOST'], `www`) !== false) { echo "WWW found"; } else { echo "WWW not found"; }