In PHP ist es eine übliche Voraussetzung zu überprüfen, ob ein Domänenname das richtige Format erfüllt. Normalerweise können wir auf zwei Arten überprüfen: Eine besteht darin, reguläre Ausdrücke für die Formatüberprüfung zu verwenden, und der andere ist zu überprüfen, ob der Domain-Name über die integrierte CheckDNSRR- Funktion von PHP existiert. In diesem Artikel werden diese beiden Methoden eingehend untersucht und vorgestellt, wie sie kombiniert werden können, um eine effektive Überprüfung der Domainnamen zu erreichen.
Regelmäßige Ausdrücke sind ein leistungsstarkes Werkzeug, das schnell überprüft, ob die Zeichenfolgen den festgelegten Mustern entsprechen. Bei der Überprüfung des Domain -Namensformats müssen wir die folgenden Schlüsselelemente berücksichtigen:
Ein Domain -Name besteht aus Buchstaben, Zahlen, kurzen horizontalen Linien und Punkten ( . ).
Jedes Etikett (teilweise durch Punkte getrennt) muss mindestens einen Buchstaben oder eine Nummer enthalten und kann nicht mit einer kurzen horizontalen Linie beginnen oder enden.
Die Gesamtlänge darf 253 Zeichen nicht überschreiten.
Hier ist ein Beispiel für einen regulären Ausdruck zum Überprüfen des Domain -Namensformates:
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">validate_domain_format</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$domain</span></span></span><span>) {
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">'/^(?!-)[A-Za-z0-9-]{1,63}(?<!-)\.(?!-)[A-Za-z0-9-]{1,63}(?<!-)$/'</span></span><span>;
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">preg_match</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$domain</span></span><span>);
}
</span></span>
^(?! -) : Stellen Sie sicher, dass der Domain -Name nicht mit einer kurzen horizontalen Linie ( - ) beginnt.
[A-Za-Z0-9-] {1,63} : Jeder Teil des Domänennamens (Etikett) kann Buchstaben, Zahlen und kurze horizontale Linien mit einer Länge von 1 bis 63 Zeichen enthalten.
(? <! -) : Stellen Sie sicher, dass der Domain -Name nicht mit einer kurzen horizontalen Linie ( - ) endet.
\. : Match Point ( . ) Zeichen.
Dieser reguläre Ausdruck sorgt für die Legalität und Formatierung jedes Teils des Domain -Namens.
Obwohl reguläre Ausdrücke die Richtigkeit des Domänennamenformats überprüfen können, kann es nicht überprüfen, ob der Domänenname tatsächlich existiert. Um sicherzustellen, dass der Domänenname gültig ist, können wir die integrierte CheckDNSRR- Funktion von PHP verwenden, mit der überprüft wird, ob der Domänenname entsprechende DNS-Datensätze enthält. Wenn es einen gültigen DNS -Datensatz gibt, bedeutet dies, dass der Domänenname existiert und zugänglich ist.
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">check_domain_exists</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$domain</span></span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">checkdnsrr</span></span><span>(</span><span><span class="hljs-variable">$domain</span></span><span>, </span><span><span class="hljs-string">"A"</span></span><span>); </span><span><span class="hljs-comment">// prüfen A Aufzeichnen,Es bedeutet, ob der Domänenname gültig ist</span></span><span>
}
</span></span>
checkdnsrr ($ domain, "a") : Diese Funktion prüft, ob der Domänenname einen Datensatz hat, dh, ob eine IP -Adresse mit dem Domänennamen zugeordnet ist. Wenn ja, geben Sie True zurück und geben Sie an, dass der Domänenname gültig ist.
Sie können auch den MX -Parameter verwenden, um zu überprüfen, ob der Domänenname E -Mail -Exchange -Datensätze enthält, oder den gesamten Parameter verwenden, um zu überprüfen, ob eine Art von DNS -Datensatz vorhanden ist.
Um das Format und die Existenz des Domänennamens gleichzeitig zu überprüfen, können wir eine Kombination aus regulären Ausdrücken und CheckDNSRR -Funktion verwenden. Der folgende Code zeigt, wie diese gemeinsame Überprüfung durchgeführt wird:
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">validate_domain</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$domain</span></span></span><span>) {
</span><span><span class="hljs-comment">// Überprüfen Sie zuerst das Domänennamenformat</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">validate_domain_format</span></span><span>(</span><span><span class="hljs-variable">$domain</span></span><span>)) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Ungültiges Domänennamenformat"</span></span><span>;
}
</span><span><span class="hljs-comment">// 然后prüfen域名是否存在</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">check_domain_exists</span></span><span>(</span><span><span class="hljs-variable">$domain</span></span><span>)) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Der Domain -Name existiert nicht"</span></span><span>;
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"Der Domain -Name ist korrekt und existiert"</span></span><span>;
}
</span></span>
<span><span><span class="hljs-variable">$domain</span></span><span> = </span><span><span class="hljs-string">"example.com"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">validate_domain</span></span><span>(</span><span><span class="hljs-variable">$domain</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$result</span></span><span>; </span><span><span class="hljs-comment">// Ausgabe "Der Domain -Name ist korrekt und existiert"</span></span><span>
</span></span>
Internationalisierter Domainname (IDN) : Wenn Ihre Anwendung internationalisierte Domain-Namen (d. H. Domainnamen, die Nicht-ASCII-Zeichen enthalten), unterstützen müssen, können Sie die Funktion idn_to_ascii () verwenden, um sie vor der Überprüfung in ASCII-Codierung umzuwandeln.
Domänennamenlängengrenze : Gemäß dem Standard darf die Gesamtlänge eines Domänennamens 253 Zeichen nicht überschreiten. Wenn der vom Benutzer eingegebene Domänenname diese Länge überschreitet, sind zusätzliche Überprüfungen erforderlich.
Fehlerbehandlung : Wenn Sie die Funktion checkDnsrr aufrufen, können Sie auf Fehler auf DNS -Auflösungsfehler stoßen. Daher ist es am besten, das @ -Symbol zu verwenden, um die Fehlerausgabe zu unterdrücken und die Fehler gemäß der tatsächlichen Situation zu verarbeiten.
Durch die Kombination regulärer Ausdrücke und CheckDNSRR -Funktionen können PHP -Entwickler das Format und die Existenz von Domainnamen effizient überprüfen. Reguläre Ausdrücke stellen sicher, dass das Domain -Namensformat den Standards entspricht, und die Funktion CheckDNSRR überprüft weiter, ob der Domänenname tatsächlich vorhanden ist. Diese Verifizierungsmethode mit zwei Faktoren verbessert die Genauigkeit und Zuverlässigkeit der Domänennamenüberprüfung erheblich und kann effektiv vermeiden, die durch Formatfehler oder ungültige Domainnamen verursacht werden.