0

重複の可能性:
URLのPHP検証/正規表現正規表現
とPhpを使用してドメイン名を検証するにはどうすればよいですか?

私は現在、この正規表現パターンを使用して、ドメイン名をデータベースに追加する前に検証しています。

$pattern = '/^https?:\/\/([a-zA-Z0-9_\-]+:[^\s@:]+@)?((([a-zA-Z][a-zA-Z0-9\-]+\.)+[a-zA-Z\-]+)|((2(5[0-5]|[0-4][0-9])|[01][0-9]{2}|[0-9]{1,2})\.(2(5[0-5]|[0-4][0-9])|[01][0-9]{2}|[0-9]{1,2})\.(2(5[0-5]|[0-4][0-9])|[01][0-9]{2}|[0-9]{1,2})\.(2(5[0-5]|[0-4][0-9])|[01][0-9]{2}|[0-9]{1,2})))(:[0-9]{1,5})?(\/[!~*\'\(\)a-zA-Z0-9;\/\\\?:\@&=\+\$,%#\._-]*)*$/';

このパターンでは、サブドメイン、ipv4文字列などが許可されます。これはディレクトリ用であるため、通常は有効な文字列は許可されません。たとえばhttp://localhost、とにかく、追加する必要があるのは、ipv6IP文字列と次のような国際ドメイン名のサポートです。たとえば、müller.com

私は現在使用しています:

$url = "http://müller.com/"
if(preg_match($pattern,$url)) {
echo "valid";
} else {
echo "invalid";
}

また、ipv6アドレスと外部文字を除いて、検証したいほとんどすべてを検証します。

本当に私の一日になるので、誰かが2つの追加を思い付くことができるだろうかと思います。私はPHPに非常に慣れていないので、物事を私に投げつけないでください。代わりに、実際の例を見せて、追加したものを説明できれば、はるかに便利です。

たぶん、チェックする前に外国のものを有効なpunycode URLに変換し、代わりにpunycodeを許可する必要があります。私は提案を受け付けています。

どうもありがとうございました-あなたの助けは大歓迎です

編集:私は同様の解決策を探していないので、この質問が重複しているとは思えません。さらに、参照されている既存の解​​決策はうまくいきません。FILTER_VALIDATE_URLは、許可したくない文字列を許可し、他のソリューションでも正規表現パターンが役に立たなくなるため、機能しません。

私が探しているのは私が持っているものですが、さらにipv6IP文字列とpunycode名/国際名をサポートしています。

4

0 に答える 0