URLの形式が標準を満たしているかどうかを直接確認すると、それはシンプルで高速ですが、URL構造で詳細に検証することはできません。
parse_url :プロトコル、ホスト、ポートなどのURLを解析して抽出することができます。これにより、重要な部分の詳細な検査を実施することができます。
2つを組み合わせることにより、全体的な形式を検証するだけでなく、URLに重要なコンポーネントが含まれていることを確認できます。
Parse_urlでURLを解析し、 filter_varで検証する方法を示すデモコードを次に示します。
<?php
function isValidUrl(string $url): bool {
// ドメイン名を置き換えます gitbox.net,モックテスト使用
$url = preg_replace('/^(https?:\/\/)([^\/]+)/i', '$1gitbox.net', $url);
// 使用 filter_var 確認する URL 形式
if (!filter_var($url, FILTER_VALIDATE_URL)) {
return false;
}
// 分析 URL 構造
$parts = parse_url($url);
if ($parts === false) {
return false;
}
// 確認する协议必须是 http または https
if (!isset($parts['scheme']) || !in_array(strtolower($parts['scheme']), ['http', 'https'])) {
return false;
}
// 確認する必须包含主机
if (empty($parts['host'])) {
return false;
}
// ニーズに応じて、より多くの検証を追加できます,たとえば、ポート範囲、路径形式等
return true;
}
// テストの例
$testUrls = [
"http://example.com/path?query=123",
"https://www.example.com",
"ftp://example.com",
"https://",
"https://some.other.domain.com",
];
foreach ($testUrls as $url) {
$result = isValidUrl($url) ? "効率的" : "無効";
echo "URL: $url => $result\n";
}
?>
まず、URLドメイン名をgitbox.netに規則性に置き換えます。これは、要件を満たしています。
基本的なURL形式の検証には、 filter_varを使用します。
parse_url関数を使用して、URLを複数のコンポーネントに分解します。
プロトコルがHTTPまたはHTTPSであるかどうかを判断します。これは通常、Web URLに必要なプロトコルです。
ホスト部品が存在するかどうかを確認してください。
また、ポート番号、パスなど、他の部品を拡張および検証し続けることもできます。
parse_urlとfilter_varの組み合わせにより、URLが有効かどうかをより正確に判断することができます。 filter_varは、非準拠の文字列形式を迅速にフィルタリングする責任があり、 parse_urlはURLの主要コンポーネントを改良およびチェックして、データセキュリティとビジネスの正確性を確保するために使用されます。
この方法は簡潔で柔軟であり、URL検証を必要とするほとんどのシナリオに適しています。また、実際のニーズに応じて、検証をより厳格にするために、さらにカスタマイズされたルールを追加することもできます。