1

ウィキペディアによると、URI は次のように定義されています。

<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]

「http://some site/page」を渡そうとしましUri.IsWellFormedUriStringたが、false が返されます。次に、空白をエンコードして "http://some%20site/page" を試しました。それでも偽になりました。

ただし、「http://somesite/page%20Zero」は True になります。

URIの「ルートレベル」であるという結論を引き出すことができますか。スペースは許可されていませんか? または、私が見逃した何かがあります。

4

3 に答える 3

2

URI の内訳が過度に単純化されています。「階層部分」には と が含まれauthorityますpath。はauthority、オプションのユーザー名/パスワード、ホスト名、およびポートの詳細にさらに分類されます。

URIのhttp://some site/pageホスト名コンポーネントとして「some site」が含まれていますが、これは無効です。

URI には、http://somesite/page zero有効なホスト名として「somesite」があり、パス コンポーネントとして「page zero」も有効です。

于 2012-11-13T23:49:35.433 に答える
1

URIのhierarchical部分は、実際にはauthoritypathコンポーネントで構成されます。詳細については、 RFC 3986を参照してください。

特に、このセクションで定義されている (とりわけ) 「pct エンコードされた」文字pathからコンポーネントが本質的に構築されていることがわかります。その例を次に示します。pchars%20


ここに URI 検証の問題に対する PHP ソリューションを投稿しました。

この PHP URL 解析機能をほぼ完璧にするにはどうすればよいですか?

コードは RFC 3986 に対して大まかに検証されますが、いくつかの例外があります。

于 2012-11-13T23:59:15.100 に答える
1

いいえ、URL のドメイン名部分にスペースは使用できません。詳細はこちら

http://www.thesitewizard.com/domain/domain-name-with-spaces-or-dots.shtml

http://www.netregister.biz/faqit.htm#1

于 2012-11-13T23:50:25.297 に答える