ホームページ > バックエンド開発 > PHPチュートリアル > PHP正規表現を使用してURLアドレス形式を確認する方法

PHP正規表現を使用してURLアドレス形式を確認する方法

王林
リリース: 2023-06-24 13:00:01
オリジナル
2278 人が閲覧しました

インターネットの急速な発展に伴い、URL アドレスは人々の日常生活に欠かせないものになりました。 Web 開発では、ユーザーが入力した URL アドレスがシステムで正しく認識され、使用されることを確認するために、形式検証を実行する必要があります。この記事では、PHP 正規表現を使用して URL アドレス形式を確認する方法を紹介します。

1. URL アドレスの基本コンポーネント

URL アドレス形式を確認する方法を理解する前に、まず URL アドレスの基本コンポーネントを理解する必要があります。通常、標準の URL アドレスは次の部分で構成されます:

1. 通信プロトコル部分 (プロトコル): クライアントとサーバー間の通信のプロトコルを指定します。一般的なものには、http プロトコルと https プロトコルが含まれます。

2. ホスト部(host): 接続するサーバーのホスト名またはIPアドレスを指定します。

3. ポート番号部分(port): 接続するサーバーが使用するポート番号を指定します。通常はホスト名とプロトコルによって決まるデフォルト値です。

4. パス部分 (path): サーバー上の特定のページまたはファイルへのパスを指定します。

5. クエリ文字列部分 (querystring): クライアントからサーバーに渡される追加パラメータ。

6. フラグメント識別子部分(fragment identifier): リソース内の位置を指定します。

2. PHP は正規表現を使用して URL アドレス形式を検証します

PHP では、正規表現を使用して preg_match 関数を使用することにより、URL アドレス形式を簡単に検証できます。

1. 通信プロトコルの確認

正規表現 /^https?:/// を使用して、URL アドレスの通信プロトコルが正当かどうかを確認します。このうち、^ は文字列の先頭と一致し、https? は http または https プロトコルの選択を示し、// は「//」文字と一致することを示します。

サンプル コード:

$url = "http://www.example.com";
if(preg_match('/^https?:///', $url)){
    echo "通讯协议合法";
} else {
    echo "通讯协议不合法";
}
ログイン後にコピー

2. ホスト名を確認します

正規表現 /^[A-Za-z0-9.-] .[A-Za- z を使用します。 ]{2,}$/ は、URL アドレスのホスト名が正当であるかどうかを検証できます。このうち [A-Za-z0-9.-] はホスト名に文字、数字、ダッシュ、ピリオドを含めることができ、1 回以上一致することを意味し、.[A-Za-z]{2,}$ はホスト名に文字、数字、ダッシュ、ピリオドを含めることを意味します。ピリオドの後に少なくとも 2 文字の文字列が続くものと一致します。文字列は URL アドレスの末尾である必要があります。

サンプル コード:

$url = "http://www.example.com";
if(preg_match('/^[A-Za-z0-9.-]+.[A-Za-z]{2,}$/', parse_url($url, PHP_URL_HOST))){
    echo "主机名合法";
} else {
    echo "主机名不合法";
}
ログイン後にコピー

3. ポート番号を確認します

正規表現 /:d $/ を使用して、URL アドレスのポート番号が正当かどうかを確認します。その中で、: はコロン文字と一致することを意味し、d は 1 つ以上の数字と一致することを意味し、数字は URL アドレスの末尾である必要があります。

サンプル コード:

$url = "http://www.example.com:8888";
if(preg_match('/:d+$/', parse_url($url, PHP_URL_PORT))){
    echo "端口号合法";
} else {
    echo "端口号不合法";
}
ログイン後にコピー

4. パスの確認

正規表現 /^[/w.-] $/ を使用して、URL アドレスのパスが正しいかどうかを確認します。合法です。このうち、^ は文字列の先頭に一致し、[/w.-] はパスにスラッシュ、文字、数字、アンダースコア、ピリオドを含めることができ、少なくとも 1 文字に一致することを意味し、$ は文字列の末尾に一致することを意味します。

サンプル コード:

$url = "http://www.example.com/path/to/page.html";
if(preg_match('/^[/w.-]+$/', parse_url($url, PHP_URL_PATH))){
    echo "路径合法";
} else {
    echo "路径不合法";
}
ログイン後にコピー

5. クエリ文字列の検証

正規表現 /^?. $/ を使用して、URL アドレスのクエリ文字列が正当かどうかを検証します。このうち、^ は文字列の先頭と一致し、? は疑問符文字と一致し、. は少なくとも 1 文字と一致し、$ は文字列の末尾と一致します。

サンプルコード:

$url = "http://www.example.com/path/to/page.html?param=value";
if(preg_match('/^?.+$/', parse_url($url, PHP_URL_QUERY))){
    echo "查询字符串合法";
} else {
    echo "查询字符串不合法";
}
ログイン後にコピー

6. URL アドレスの完全な形式を確認する

上記の 5 つの正規表現を通じて、URL アドレスの各部分が正しいかどうかを確認できます。一つ一つ合法的に。しかし、より一般的なアプローチは、それらを組み合わせて、URL アドレス全体の完全な形式が正当であるかどうかを検証することです。

たとえば、次の正規表現は、URL アドレスの完全な形式が正当であるかどうかを検証できます。

/^https?://[A-Za-z0-9.-]+.[A-Za-z]{2,}(:d+)?(/[w.-]*)*(?.*)?$/i
ログイン後にコピー

ここで、i は大文字と小文字を区別しないことを意味します。この正規表現には、通信プロトコル、ホスト名、ポート番号、パス、およびクエリ文字列が正当であるかどうかを検証するために使用される複数の部分表現が含まれています。

サンプル コード:

$url = "http://www.example.com/path/to/page.html?param=value";
if(preg_match('/^https?://[A-Za-z0-9.-]+.[A-Za-z]{2,}(:d+)?(/[w.-]*)*(?.*)?$/i', $url)){
    echo "URL地址合法";
} else {
    echo "URL地址不合法";
}
ログイン後にコピー

概要:

この記事では、PHP 正規表現を使用して URL アドレス形式を確認する方法を紹介します。通信プロトコル、ホスト名、ポート番号、パス、クエリ文字列が正当であるかどうかを検証することで、URL アドレスの有効性を迅速に検出し、ユーザーが入力した URL アドレスをシステムが正しく使用できることを確認できます。

以上がPHP正規表現を使用してURLアドレス形式を確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート