10

何でもかまいませんが、文字列からドメイン名を抽出する必要があります。そのような:

$sitelink="http://www.somewebsite.com/product/3749875/info/overview.html";

また

$sitelink="http://subdomain.somewebsite.com/blah/blah/whatever.php";

いずれにせよ、私は「somewebsite.com」の部分(何でもかまいません)を抽出し、残りを破棄しようとしています。

4

6 に答える 6

19

parse_url ($ url)を使用

<?php
$url = 'http://username:password@hostname/path?arg=value#anchor';

print_r(parse_url($url));
?>

The above example will output:

Array
(
    [scheme] => http
    [host] => hostname
    [user] => username
    [pass] => password
    [path] => /path
    [query] => arg=value
    [fragment] => anchor
)

thos値の使用

echo parse_url($url, PHP_URL_HOST); //hostname

また

$url_info = parse_url($url);
echo $url_info['host'];//hostname
于 2013-02-07T07:03:28.293 に答える
5

ここにあります

<?php

$sitelink="http://www.somewebsite.com/product/3749875/info/overview.html";

$domain_pieces = explode(".", parse_url($sitelink, PHP_URL_HOST));

$l = sizeof($domain_pieces);

$secondleveldomain = $domain_pieces[$l-2] . "." . $domain_pieces[$l-1];

echo $secondleveldomain;

これはおそらくあなたが探している振る舞いではないことに注意してください。

stackoverflow.co.uk

「co.uk」をエコーし​​ます


見る:

http://publicsuffix.org/learn/

http://www.dkim-reputation.org/regdom-libs/

http://www.dkim-reputation.org/regdom-lib-downloads/ <-ここからダウンロード、phpが含まれています

于 2013-02-07T07:06:02.497 に答える
2

2つの複雑なURL

$url="https://www.example.co.uk/page/section/younameit";
or
$url="https://example.co.uk/page/section/younameit";

「www.example.co.uk」を取得するには:

$host=parse_url($url, PHP_URL_HOST);

「example.co.uk」のみを取得するには

$parts = explode('www.',$host);
$domain = $parts[1];

// ...or...

$domain = ltrim($host, 'www.')

URLに「www」が含まれている場合。または、同じ最終結果、つまり「example.co.uk」が得られるかどうか

Voilà!

于 2014-04-23T01:25:19.847 に答える
2

パブリックサフィックスリストを使用するパッケージが必要です。この方法でのみ、2、3レベルのTLD(co.uk、a.bg、b.bgなど)とマルチレベルのサブドメインを持つドメインを正しく抽出できます。正規表現、parse_url()、または文字列関数は、絶対的に正しい結果を生成することはありません。

TLDExtractの使用をお勧めします。ここにコードの例があります:

$extract = new LayerShifter\TLDExtract\Extract();

$result = $extract->parse('http://www.somewebsite.com/product/3749875/info/overview.html');
$result->getSubdomain(); // will return (string) 'www'
$result->getHostname(); // will return (string) 'somewebsite'
$result->getSuffix(); // will return (string) 'com'
$result->getRegistrableDomain(); // will return (string) 'somewebsite.com'
于 2016-07-01T14:49:19.380 に答える
0

何でもよい文字列の場合、新しいアプローチ:

function extract_plain_domain($text) {

    $text=trim($text,"/");
    $text=strtolower($text);

    $parts=explode("/",$text);
    if (substr_count($parts[0],"http")) {
        $parts[0]="";
    }
    reset ($parts);while (list ($key, $val) = each ($parts)) {
            if (!empty($val)) { $text=$val; break; }
    }

    $parts=explode(".",$text);
    if (empty($parts[2])) {
        return $parts[0].".".$parts[1];
        } else {
        $num_parts=count($parts);
        return $parts[$num_parts-2].".".$parts[$num_parts-1];
        }

} // end function extract_plain_domain
于 2017-03-27T11:07:42.327 に答える
0

Utopia Domainsライブラリ(https://github.com/utopia-php/domains )を使用できます。Mozillaパブリックサフィックスリスト( https://publicsuffix.org)に基づいてドメインTLDとパブリックサフィックスを返します。現在アーカイブされているTLDExtractパッケージの代わりに使用できます。

'parse_url'関数を使用してURLからホスト名を取得し、Utopia Domainsパーサーを使用して正しいTLDを取得し、ドメイン名と一緒に結合することができます。

<?php

require_once './vendor/autoload.php';

use Utopia\Domains\Domain;

$url = 'http://demo.example.co.uk/site';

$domain = new Domain(parse_url($url, PHP_URL_HOST)); // demo.example.co.uk

var_dump($domain->get()); // demo.example.co.uk
var_dump($domain->getTLD()); // uk
var_dump($domain->getSuffix()); // co.uk
var_dump($domain->getName()); // example
var_dump($domain->getSub()); // demo
var_dump($domain->isKnown()); // true
var_dump($domain->isICANN()); // true
var_dump($domain->isPrivate()); // false
var_dump($domain->isTest()); // false

var_dump($domain->getName().'.'.$domain->getSuffix()); // example.co.uk
于 2020-02-22T07:45:37.507 に答える