回答編集履歴
2
以外
answer
CHANGED
@@ -48,7 +48,7 @@
|
|
48
48
|
```
|
49
49
|
|
50
50
|
最後に「名前」と「値」をパーセントデコード(旧称: URLデコード)します。
|
51
|
-
正規表現系統の標準関数が使えないということなので、`chr()` を使いたいところですが、仕方がないので「ASCII値 <-> 文字」の変換マップを自前で用意して変換していきます。
|
51
|
+
正規表現系統以外の標準関数が使えないということなので、`chr()` を使いたいところですが、仕方がないので「ASCII値 <-> 文字」の変換マップを自前で用意して変換していきます。
|
52
52
|
|
53
53
|
```PHP
|
54
54
|
'/(?:%[\dA-Fa-f]{2})+|\+/'
|
1
typo修正
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
### URL Standard
|
10
10
|
|
11
|
-
時代は移り変わり、RFCで定義されていた URI は WHATWG によって URL Standard
|
11
|
+
時代は移り変わり、RFCで定義されていた URI は WHATWG によって URL Standard として再定義されました。
|
12
12
|
この仕様は URL のパース処理も規定されているので、URLパーサを作る際にはとても役立ちます。
|
13
13
|
https://triple-underscore.github.io/URL-ja.html
|
14
14
|
https://url.spec.whatwg.org
|
@@ -20,14 +20,14 @@
|
|
20
20
|
|
21
21
|
まず、URLハッシュを取り除きます。
|
22
22
|
この正規表現にマッチした文字列を削除する事で `http://example.com/#?foo=1&bar=2` のようなクエリ文字列ではないURLハッシュ値にマッチしてしまう問題を回避します。
|
23
|
-
本来、不正なURLですが、ブラウザは
|
23
|
+
本来、不正なURLですが、ブラウザは `http://example.com/#foo#bar` において `#foo#bar` をURLハッシュとして扱う為、始めにマッチした # 以降をURLハッシュと見做します。
|
24
24
|
|
25
25
|
```PHP
|
26
26
|
'/#.*$/'
|
27
27
|
```
|
28
28
|
|
29
29
|
次にクエリ文字列にマッチさせます。
|
30
|
-
前述の処理でURLハッシュ
|
30
|
+
前述の処理でURLハッシュが存在しない事が確定しているので安心して終端までマッチできます。
|
31
31
|
本来、不正なURLですが、`http://example.com/?foo=1&bar=2?&piyo=3` が与えられれば、`?foo=1&bar=2?&piyo=3` をクエリ文字列と見做します。
|
32
32
|
|
33
33
|
```PHP
|