URIの正規表現で質問させてください

http://www.hoge.com/foo/barなど普通のURIはいいのですが、
URIが正しいかのチェックをしようと思い
PHPにて|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i
とか
Zend_Uri::check($url)とかしたのですが、
@とか<>とかセキュリティ的にも\0とか不要であると思われるものをURI内に入れても普通にチェックを通ってしまいます
英数字、エンコードした時の文字とか有り得る文字以外はValidateチェックにて弾きたいと思うのですが、どのような正規表現が書けるものなのでしょうか?
[?&/%_-]*とかホワイトリスト的に書き加えようと思ったのですが、それ以外の有り得る文字列が分かりませんでした

・URI指示にてまず有り得ない文字が入っていたら排除したい
・NULLバイトなどセキュリティ的に問題があるものを排除したい

そもそもNULLバイトの場合は正規表現で省くのではなく、preg_match('/\0/', $uri)などで弾くのかもしれませんが

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/11/02 16:53:56
  • 終了:2011/11/09 16:55:02

回答(0件)

回答はまだありません

  • id:mezala
    phpはよく知らないのでコメントで.
    http://phpspot.net/php/pg%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%EF%BC%9A%E6%AD%A3%E3%81%97%E3%81%84%EF%BC%B5%EF%BC%B2%EF%BC%AC%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E8%AA%BF%E3%81%B9%E3%82%8B.html
    こういうの参考になりませんか?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません