質問するログイン新規登録

回答編集履歴

2

回答の再訂正

2024/08/24 13:44

投稿

hiroki-o
hiroki-o

スコア1596

answer CHANGED
@@ -24,4 +24,19 @@
24
24
  $url = str_replace("%2F", "/", $url);
25
25
  return filter_var($url, FILTER_VALIDATE_URL) && preg_match("/^(https?):/", $url);
26
26
  }
27
+ ```
28
+
29
+ (訂正・その2)
30
+ otnさんの指摘により訂正します。
31
+
32
+ isValidURL関数に5行追加します。
33
+ ```
34
+ function isValidURL($url) {
35
+ $url = rawurlencode($url);
36
+ $url = str_replace("%3A", ":", $url);
37
+ $url = str_replace("%2F", "/", $url);
38
+ $url = str_replace("%3F", "?", $url);
39
+ $url = str_replace("%3D", "=", $url);
40
+ return filter_var($url, FILTER_VALIDATE_URL) && preg_match("/^(https?):/", $url);
41
+ }
27
42
  ```

1

回答の訂正

2024/08/24 07:04

投稿

hiroki-o
hiroki-o

スコア1596

answer CHANGED
@@ -11,4 +11,17 @@
11
11
  のFILTER_VALIDATE_URLには、「この関数は、ASCII の URL のみを正しいとみなすことに注意しましょう。 国際化ドメイン名 (非 ASCII 文字を含むもの) は失敗します。」とあります。
12
12
 
13
13
  idn_to_ascii
14
- [https://www.php.net/manual/ja/function.idn-to-ascii.php](https://www.php.net/manual/ja/function.idn-to-ascii.php)
14
+ [https://www.php.net/manual/ja/function.idn-to-ascii.php](https://www.php.net/manual/ja/function.idn-to-ascii.php)
15
+
16
+ (訂正)
17
+ 最初の回答は、国際化ドメインと日本語URLを勘違いしていました。申し訳ございませんでした。
18
+
19
+ isValidURL関数に3行追加します。
20
+ ```
21
+ function isValidURL($url) {
22
+ $url = rawurlencode($url);
23
+ $url = str_replace("%3A", ":", $url);
24
+ $url = str_replace("%2F", "/", $url);
25
+ return filter_var($url, FILTER_VALIDATE_URL) && preg_match("/^(https?):/", $url);
26
+ }
27
+ ```