2010-12-07 16 views
1

以前は正規表現を使用したことがなく、URLのドメインを取得するPHPで正規表現を書く方法が不思議でした。例: http://www.hegnar.no/bors/article488276.ece - > hegnar.noURLのメインドメインを取得するための正規表現

+0

でより多くのケースをチェックし続ける必要があるように

$url = 'http://bannedadsense/isbanned'; // this url will return false in preg_match //$url = 'http://bannedadsense.com/isbanned'; // this url will return domain in preg_match $domain = parse_url($url, PHP_URL_HOST)); // return "bannedadsense", meaning this is right domain. 

.com/a/9891706/480021](URL:http://stackoverflow.com/a/9891706/480021) – zyanlu

答えて

2

を参照してくださいをチェックURLを特に扱っている場合。

例えば:

$url = "http://www.hegnar.no/bors/article488276.ece"; 
$url_u_want = parse_url($url, PHP_URL_HOST); 

Docs

EDIT: WWWを取り出します。インフロント、使用は:あなたがでもparse_url、無.comや.netのかなど、その後返された結果が真、事実bannedadsenseを返すbannedadsense、この平均値であると$のURLを使用する場合

$url_u_want = preg_replace("/^www\./", "", $url_u_want); 
+0

これは完璧です。 wwwは削除されません。それを行うには? –

+0

しかし、wwwがないとどうなるでしょうか?最初から、それは動作しません! –

+1

あなたは最初のものの前に何かを剥がしたいと思っています。あなたはwwwがない場合。それは単に実行されず、あなたが持っているものをあなたに残すことはありません。つまりサブドメインをサブドメインから取り除きたいとは思わないのですか? –

7

このタスクでは、regexpを使用する必要はありません。

機能に建てられたPHPの、でもparse_url http://php.net/manual/en/function.parse-url.php

+0

URLにwwwがない場合はnullを返します。またはhttp –

+0

falseを返すのは何ですか? PHPマニュアルへのリンク? –

+0

関数です。 URLにwwwがない場合はnullを返します。 –

1
$host = parse_url($url, PHP_URL_HOST); 
$host = array_reverse(explode('.', $host)); 
$host = $host[1].'.'.$host[0]; 
2
$page = "http://google.no/page/page_1.html"; 
preg_match_all("/((?:[a-z][a-z\\.\\d\\-]+)\\.(?:[a-z][a-z\\-]+))(?![\\w\\.])/", $page, $result, PREG_PATTERN_ORDER); 

print_r($result); 
+0

wwwを削除することはできますか?同じように? –

+0

はい、print_r(str_replace( 'www。'、 ''、$ result));もしwww。見つかった。 –

0

これは問題ですドメインではありません。 [ます。http:// stackoverflowの私たちがいないドット拡張子(.COM、.NET、.ORG、など)これに似

if(preg_match("/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$/i",$domain)) { 
    echo $domain; 
}else{ 
    echo "<br>"; 
    echo "false"; 
} 
関連する問題