2011-01-15 8 views
2

でWWWを追加私が検証し、このコードで私のURL変数にHTTP(またはHTTPS)を追加している:検索サブドメインとREGEX

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

しかし、これは私のために十分ではありません。もう一つのステップが必要です。私はサブドメインをチェックしなければならない。サブドメインがない場合は、wwwを追加します。例えば

$ URLがある場合(この2 にpreg_replace()後)任意のサブドメインと が存在しない場合:http://example.com、HTTPに変換:// WWW。 example.com。 $ urlがhttp://www.example.comの場合は、触れないでください。 (してくださいにpreg_replace付き)

SUMMARY $ URLは、サブドメインやWWWされていない場合、IN

WWWを追加します。

+0

私はいつも他の質問に答えています。 – Eray

+0

可能性のある[REGEX Pattern For URL Validation](http://stackoverflow.com/questions/4636143/regex-pattern-for-url-validation) – mario

+0

大部分の人物については、どんな答えでも、なぜその質問に答えるのか。 – dqhendricks

答えて

0

phpのURLパーサーを使用する方が簡単かもしれません。

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

+1

URLを分割して編集した後に再構成することができます。 – dqhendricks

+1

ありがとうございますが、** parse_url()**でサブドメインを見つけることができません。それは私にサブドメインのホストを与えます。私は** explode( "。"、$ parsed); **等 – Eray

+0

を使用しなければなりません。指定された通りに配列が爆発すると、配列が2より長い場合、配列の最初の項目はサブドメインになります。 – dqhendricks

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 
    ) 
); 

も参照してください:

+0

未定義関数を呼び出すhttp_build_url()... – Eray

+0

マニュアルを参照してください。 – seriousdev

+0

メモはありません。 – Eray

0

TLDルックアップテーブルがないと、あなたがこれを行うことができると想像する唯一の方法は、あなたのドメインが既に分かっている場合です。

$domain = 'example.com'; 

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