PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPでドメイン名を検証する方法を解説!正規表現を使ったバリデーションの実装例

PHPでドメイン名の妥当性をチェックするには?

PHPでは、preg_match() 関数と正規表現を組み合わせることで、ドメイン名が正しい形式かどうかを簡単に検証できます。以下のサンプルコードでは、「使用できる文字の種類」「文字列全体の長さ」「各ラベル(ピリオドで区切られた部分)の長さ」という3つの観点からドメイン名をチェックしています。

サンプルコード

<?php
function is_valid_domain_name($domain_name) {
    return (
        preg_match("/^([a-z\d](-*[a-z\d])*)(\.([a-z\d](-*[a-z\d])*))*$/i", $domain_name) // 使用できる文字かどうかのチェック
        && preg_match("/^.{1,253}$/", $domain_name) // 文字列全体の長さチェック
        && preg_match("/^[^.]{1,63}(\.[^.]{1,63})*$/", $domain_name) // 各ラベルの長さチェック
    );
}
?>

定義した関数を使って、実際にドメイン名を検証してみましょう。

$domain_name = 'tutorialspoint.com';

if (is_valid_domain_name($domain_name)) {
    echo 'ドメイン名は有効です';
} else {
    echo 'ドメイン名は無効です';
}

出力結果

ドメイン名は有効です

コードの解説

上記のコードでは、ユーザー定義関数 is_valid_domain_name() の中で、引数として渡されたドメイン名に対して preg_match() 関数によるパターンマッチングを行っています。それぞれの正規表現の役割は以下のとおりです。

  • 使用可能な文字のチェック: ドメイン名に使用できるのは半角英数字(a〜z、0〜9)とハイフンのみで、ラベルの先頭や末尾をハイフンにすることはできません。
  • 全体の長さチェック: DNSの仕様上、ドメイン名全体は253文字以内である必要があります。
  • 各ラベルの長さチェック: ピリオドで区切られた各ラベルは、それぞれ63文字以内である必要があります。

これらの条件をすべて満たした場合にのみ関数は true を返し、一つでも条件を満たさなければ false を返します。

注意点:URL形式の文字列を渡す場合

https://example.com のようにプロトコル(スキーム)を含むURL文字列をそのまま渡すと、「:」や「/」が含まれているため検証に失敗します。その場合は、parse_url() 関数などでホスト名部分だけを取り出してから判定するとよいでしょう。

$url = 'https://tutorialspoint.com';
$host = parse_url($url, PHP_URL_HOST); // 'tutorialspoint.com' を取得
var_dump(is_valid_domain_name($host)); // bool(true)
  1. 中国のドメイン名詐欺を見つける方法

    あなたの車が盗まれたり、家が侵入されたりするのを防ぐ方法を私があなたに提供したとしたら、あなたは私にそれを払ってくれませんか?多くの人がそうするでしょう-多くの人にとって、彼らのブランドは他のものと同じくらい重要です。これが、中国のドメイン名詐欺が非常に人気があり、成功している理由です。 中国のドメイン名詐欺が横行しています。少しの間、これらの詐欺が何であるかを正確に説明しますが、最初に、何がそれらを始めたのかを理解することがより重要です。 「ブランドを保護する」ために企業をアジアのドメインに登録させる努力は何年も続いています。これは早くも2006年に現象になったようです。しかし、CNNIC

  2. WordPressサイトのドメイン名を変更する4つの方法【初心者向け完全ガイド】

    WordPressサイトを運営していると、ドメイン名を変更したくなる場面があります。より良いドメイン名を見つけたときや、サイト構築時に仮のドメインを使っていた場合などがその例です。いずれの場合も、新しいドメインへの移行をスムーズに行うために、WordPress側の設定をいくつか変更する必要があります。なお、サイトを新しいサーバーへ移行したい場合は、ダウンタイムなしで移行するための専用ガイドを参考にしてください。事前準備:必要な情報をすべて揃えておくドメイン名を変更する前に、以下の情報にすぐアクセスできる状態にしておきましょう。WordPress管理者のログイン情報(ダッシュボードにログインする