1

TLD 拡張子を持ついくつかのドメインを含むデータの配列があります。ドメイン名とTLD拡張子を別々に収集したい。

例: "hello.com" から "hello" を 1 つの変数として収集し、次に ".com" を別の変数として収集します。

別の例 重要: "hello.co.uk" から "hello" を 1 つの変数として収集し、次に ".co.uk" を別の変数として収集します。

pathinfo() を使用する現在のコードは、「hello.com」では正しく動作しますが、「hello.co.uk」では正しく動作しません。「hello.co.uk」の場合、「hello.co」を 1 つの変数として収集し、次に「.uk」を別の変数として収集します。

私が使用しているコードは次のとおりです。

// Get a file into an array
$lines = file($_FILES['file']['tmp_name']);

// Loop through array
foreach ($lines as $line_num => $line) {
    echo $line;

    //Find TLD
    $tld = ".".pathinfo($line, PATHINFO_EXTENSION);
    echo $tld;

    //Find Domain
    $domain = pathinfo($line, PATHINFO_FILENAME);
    echo $domain;
    }

うまくいけば、私はそれを十分に説明しました。私はstackoverflowをよく使用しますが、これの具体的な例を見つけることができませんでした.

ありがとう

4

5 に答える 5

4

ファイル用の関数を使用する代わりに、単純な文字列操作を使用できます。

$domain = substr($line, 0, strpos($line, "."));
$tld = substr($line, strpos($line, "."), (strlen($line) - strlen($domain)));
于 2013-01-08T03:18:31.163 に答える
2

最初の方法:

$domains = array("hello.co.uk", "hello.com");

foreach ($domains as $d) {

    $ext = strstr($d, '.'); // extension
    $index = strpos($d, '.');

    $arr = str_split($d, $index);

    $domain = $arr[0]; // domain name


    echo "domain: $domain, extension: $ext <br/>";

}

2番目の方法:(hakreに感謝)

$domains = array("hello.co.uk", "hello.com");

foreach ($domains as $d) {

    list($domain, $ext) = explode('.', $d, 2);
    echo "domain: $domain, extension: $ext <br/>";

}
于 2013-01-08T03:17:42.363 に答える
0

これは非常に柔軟な関数で、example.comからhttp:// username:password @example.com /public_html/test.zip、ftp: // username@example.com 、http://wwwまですべてで機能します。 .reddit.com / r / aww / comments / 165v9u / shes_allergic_couldnt_help_herself /

function splitDomain($url) { 
 $host = "";
 $url = parse_url($url);
 if(isset($url['host'])) { 
    $host = $url['host'];
 } else {
    $host = $url['path'];
 }
 $host = str_replace('www.','',$host);
 $tmp = explode('.', $host);
 $name = $tmp[0];
 $tld = $tmp[1];
return array('name'=>$name,'tld'=>$tld);
}
于 2013-01-08T04:03:00.213 に答える
0

法的な拡張機能の大きな表を使用する以外に、これを行う信頼できる方法はありません。

一般的なテーブルは、Public Suffix Listと呼ばれるものです。

于 2013-01-08T07:53:56.637 に答える
0

2 ( co.uk ) および 3 レベルの TLD ( act.edu.au ) を扱うには、パブリック サフィックス リスト(トップ レベル ドメインのリスト)を使用するライブラリが必要です。 TLDExtractを使用することをお勧めします。

于 2016-06-20T10:20:09.037 に答える