查找子域并使用REGEX添加WWW

时间:2011-01-15 22:16:06

标签: php regex subdomain preg-replace

我正在使用以下代码验证并将 http (或 https )添加到我的网址变量中:

$url = preg_replace("/[^A-Za-z0-9-\/\.\:]/", "", trim($url));
$url = preg_replace('%^(?!https?://).*%', 'http://$0', $url);

但这对我来说还不够。我还需要一个步骤。我必须检查子域名。如果没有任何子域名,请添加 www

例如,如果没有任何子域名 (在此 preg_replace()之后)如果$ url为: http://example.com ,请转换为http:// WWW 。 example.com。如果$ url为: http://www.example.com ,请勿触摸。

(请使用preg_replace)

摘要如果$ url没有子域名和www,请添加 www

3 个答案:

答案 0 :(得分:0)

可能更容易使用php的url解析器。

http://www.php.net/manual/en/function.parse-url.php

答案 1 :(得分:0)

我明白了:

$url = 'http://teknoblogo.com';
$host = parse_url($url, PHP_URL_HOST);
$arr = explode('.', $host);

echo http_build_url($url,
    array(
        'host' => !preg_match('/^www\d*\.$/i', $arr[0]) && count($arr) <= 2 ? 'www.' . $host : $host
    )
);

另见:

答案 2 :(得分:0)

如果没有TLD查找表,我认为你能做到这一点的唯一方法就是你已经了解你的域名:

$domain = 'example.com';

$url = preg_replace('~^(https?://)(' . preg_quote($domain, '~') . ')(.*)~i', '$1www.$2$3');