0

メールアドレスを回避したいのですが、phpのexplode関数を使用してメールアドレスを分解したいと思います。

次のようにして、ユーザーをドメインまたはホストから分離してもかまいません。

list($ user、$ domain)= explode('@'、$ email);

しかし、ドメインをdomain_nameとdomain_extentionに展開しようとすると、「。」を使用してそれらを展開するときに気づきました。引数として、常にfoo.barであるとは限りません。場合によっては、fooooo.co.ukのようにfoo.ba.arになることもあります。

では、「fooooo.co」を「uk」から分離し、coをfoooooに任せる方法。最後に、TLDを他の部分から分離します。

co.ukはTLDとして扱われることになっていますが、fooooo.nat.tnやfooooo.gov.tnのように公式ではありません。

ありがとうございました。

4

4 に答える 4

2

strripos()「。」の最後の出現を見つけるために使用するだけです。

$blah = "hello.co.uk";

$i = strripos($blah, ".");

echo "name = " . substr($blah, 0, $i) . "\n";
echo "TLD = " . substr($blah, $i + 1) . "\n";
于 2010-11-07T19:32:41.963 に答える
1

可能な場合は、imap_rfc822_parse_adrlistまたはmailparse_rfc822_parse_addresses電子メールアドレスを解析することをお勧めします。また、ドメイン名から「パブリックサフィックス」を削除するには、「ドメイン拡張子を削除する」に対する私の回答を参照してください。

于 2010-11-07T19:32:02.667 に答える
1

オリの答えを拡張...

substr($address, (strripos($address, '.') + 1));

「.」なしで TLD を指定します。+1 を失うと、ドットも得られます。

于 2010-11-07T20:08:48.503 に答える
0

end(explode('.', $email));TLDを提供します。それなしでドメイン名を取得するには、その長さを差し引くなど、他の文字列操作のトリックをいくつでも実行できます。

于 2010-11-07T19:31:49.463 に答える