正規表現を使用しない PHP ドメイン名の検証
多くの開発者は、ドメイン名が特定のフォーマット ルールに準拠していることを確認する必要に直面しています。このタスクには正規表現が一般的に使用されますが、正規表現は複雑であり、エラーが発生しやすい可能性があります。この記事では、正規表現に依存せずに PHP でドメイン名を検証するためのソリューションについて説明します。
レガシー システムを使用する場合や厳格な文字制限に対処する場合など、特定の状況では、ドメイン名を検証する必要がある場合があります。正規表現に頼らずに。次の関数は、一連の論理チェックを実装することでこれを実現します。
<code class="php">function is_valid_domain_name($domain_name) { // Validate alphanumeric characters if (!preg_match("/^[a-zA-Z0-9]+$/", $domain_name)) { return false; } // Validate length of each label $labels = explode(".", $domain_name); foreach ($labels as $label) { if (strlen($label) < 1 || strlen($label) > 63) { return false; } } // Validate overall length if (strlen($domain_name) > 253) { return false; } return true; }</code>
この関数は、ドメイン名が英数字で始まり英数字で終わること、およびドメイン名内の各ラベルが指定された長さの制限に従っていることを保証します。また、ドメイン名全体の長さも検証します。
テスト ケース
次のテスト ケースは、この検証機能の有効性を示しています:
<code class="php">is_valid_domain_name? [a] Y is_valid_domain_name? [0] Y is_valid_domain_name? [a.b] Y is_valid_domain_name? [localhost] Y is_valid_domain_name? [google.com] Y is_valid_domain_name? [news.google.co.uk] Y is_valid_domain_name? [xn--fsqu00a.xn--0zwm56d] Y is_valid_domain_name? [goo gle.com] N is_valid_domain_name? [google..com] N is_valid_domain_name? [google.com ] N is_valid_domain_name? [google-.com] N is_valid_domain_name? [.google.com] N is_valid_domain_name? [<script] N is_valid_domain_name? [alert(] N is_valid_domain_name? [.] N is_valid_domain_name? [..] N is_valid_domain_name? [ ] N is_valid_domain_name? [-] N is_valid_domain_name? [] N</code>
これらの論理チェックに従うことにより、この関数は正規表現を必要とせずにドメイン名を検証する信頼性の高い方法を提供します。このアプローチにより、柔軟性が向上し、PHP でドメイン名を検証する際のエラーの可能性が減ります。
以上が正規表現を使用せずに PHP でドメイン名を検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。