code: private function getRequestPath($rawPath)
      {
          $path     = "([^?#]+)";
          $query    = "(\\?[^#]*)?";
          $fragment = "(\\#.*)?";
          $matched  = array();
          return (preg_match("/\\A{$path}{$query}{$fragment}\\z/", $rawPath, $matched)) ? $matched[1] : "/";
      }
docs: URL からクエリ部分を除いたパスを返します.
  無効なパスが指定された場合は代替値として "/" を返します.
  
  @param  string $rawPath
  @return string クエリ部分を除いたパス文字列