如何检查页面网址是否包含www?

时间:2012-11-11 23:53:03

标签: php

在PHP中,如何检查当前页面中是否包含www?

例如,如果用户在http://www.example.com/something,我如何才能在网址中找到www,而在http://example.com/something上,www不在网址中?

6 个答案:

答案 0 :(得分:11)

您可以使用$_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";

然后你会再次爆炸每个网址,并比较大小并检查第一项是否为“www”。 但请注意,您的子域可以命名为www,其中www将是子域:D 然后它看起来像这样:www.domain.com,再次,www是子域:)这太疯狂了我几乎疯了这个:)

无论如何,当网站没有使用子域名时检查www,这是和平的蛋糕。 但要检查网址是否为www且您的网站是否使用子网域,这可能很难。 解决该问题的最简单的解决方案是禁用www子域,如果可以的话。

如果您需要更多帮助但这不能回答您的问题,请随时提出。 我有类似的情况,用户可以创建自己的子域名帐户,如www.user.domain.com,我必须做同样的事情。

希望这有帮助!

答案 1 :(得分:7)

你可以做preg_match这将是:

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

你甚至可以用.htaccess来做,这取决于你正在构建上面的选项会对simpel检测做得很好。

如果你选择了Ferdia提供的选项,请按以下方式进行检查:

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

答案 2 :(得分:3)

你知道这个网址吗?然后拿这个:

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

否则,请

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

答案 3 :(得分:1)

array_shift(explode(".",$_SERVER['HTTP_HOST']));

应该工作,然后检查数组是否存在www。如果您只是想删除或强制使用www,那么.htaccess规则远远优于PHP。

答案 4 :(得分:1)

From the manual

$_SERVER['HTTP_HOST']

  

主机的内容:来自当前请求的标头(如果有)   之一。

$_SERVER['SERVER_NAME']

  

当前脚本所在的服务器主机的名称   执行。如果脚本在虚拟主机上运行,​​则会执行此操作   为该虚拟主机定义的值。

答案 5 :(得分:1)

有很多方法可以检查www是否包含。

其中一种方式是:

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