Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > cgiライブラリ > CGIクラス

class CGI

クラスの継承リスト: CGI < CGI::QueryExtension < Object < Kernel < BasicObject

Abstract

特異メソッド

escape(string) -> string

string を URL エンコードした文字列を新しく作成し返します。

例:

require "cgi"

p CGI.escape('@##')   #=> "%40%23%23"

url = "http://www.example.com/register?url=" +
  CGI.escape('http://www.example.com/index.rss')
p url
#=> "http://www.example.com/register?url=http%3A%2F%2Fwww.example.com%2Findex.rss"
escapeElement(string, *elements) -> string

elements に指定したエレメントのタグだけを実体参照に置換します。

例:

require "cgi"

p CGI.escapeElement('<BR><A HREF="url"></A>', "A", "IMG")
     # => "<BR>&lt;A HREF="url"&gt;&lt;/A&gt"

p CGI.escapeElement('<BR><A HREF="url"></A>', ["A", "IMG"])
     # => "<BR>&lt;A HREF="url"&gt;&lt;/A&gt"
escapeHTML(string) -> string

string 中の &"<> を実体参照にエンコードした文字列を新しく作成し返します。

require "cgi"

p CGI.escapeHTML("3 > 1")   #=> "3 &gt; 1"

print('<script type="text/javascript">alert("警告")</script>')

p CGI.escapeHTML('<script type="text/javascript">alert("警告")</script>')
#=> "&lt;script type=&quot;text/javascript&quot;&gt;alert(&quot;警告&quot;)&lt;/script&gt;"
parse(query) -> object

QUERY_STRING をパースします。

例:

require "cgi"

params = CGI.parse("query_string")
  # {"name1" => ["value1", "value2", ...],
  #  "name2" => ["value1", "value2", ...], ... }
pretty(string, shift = " ") -> string

HTML を人間に見やすく整形します。

例:

require "cgi"

print CGI.pretty("<HTML><BODY></BODY></HTML>")
  # <HTML>
  #   <BODY>
  #   </BODY>
  # </HTML>

print CGI.pretty("<HTML><BODY></BODY></HTML>", "\t")
  # <HTML>
  #         <BODY>
  #         </BODY>
  # </HTML>
rfc1123_date(time) -> string

時刻 time を [RFC1123] フォーマットに準拠した文字列に変換します。

例:

require "cgi"

CGI.rfc1123_date(Time.now)
  # => Sat, 1 Jan 2000 00:00:00 GMT
unescape(string) -> string

string を URL デコードした文字列を新しく作成し返します。

require "cgi"

p CGI.unescape('%40%23%23')   #=> "@##"

p CGI.unescape("http%3A%2F%2Fwww.example.com%2Findex.rss")
#=> "http://www.example.com/index.rss"
unescapeElement(string, *element) -> string

特定の要素だけをHTMLエスケープから戻す。

例:

require "cgi"

print CGI.unescapeElement('&lt;BR&gt;&lt;A HREF="url"&gt;&lt;/A&gt;', "A", "IMG")
  # => "&lt;BR&gt;<A HREF="url"></A>"

print CGI.unescapeElement('&lt;BR&gt;&lt;A HREF="url"&gt;&lt;/A&gt;', %w(A IMG))
  # => "&lt;BR&gt;<A HREF="url"></A>"
unescapeHTML(string) -> string

string 中の実体参照のうち、&amp; &gt; &lt; &quot; と数値指定がされているもの (&#0ffff など) だけを外します。

require "cgi"

p CGI.unescapeHTML("3 &gt; 1")   #=> "3 > 1"

インスタンスメソッド

header(options = "text/html") -> string

HTTP ヘッダを options に従って生成します。( CGI#out と違い、標準出力には出力しません) CGI#out を使わずに自力で HTML を出力したい場合などに使います。 このメソッドは文字列エンコーディングを変換しません。 [ruby-list:35911]

例:

header
  # Content-Type: text/html

header("text/plain")
  # Content-Type: text/plain

header({"nph"        => true,
        "status"     => "OK",  # == "200 OK"
          # "status"     => "200 GOOD",
        "server"     => ENV['SERVER_SOFTWARE'],
        "connection" => "close",
        "type"       => "text/html",
        "charset"    => "iso-2022-jp",
          # Content-Type: text/html; charset=iso-2022-jp
        "language"   => "ja",
        "expires"    => Time.now + 30,
        "cookie"     => [cookie1, cookie2],
        "my_header1" => "my_value"
        "my_header2" => "my_value"})

status パラメータには以下の文字列が使えます。

"OK"                  --> "200 OK"
"PARTIAL_CONTENT"     --> "206 Partial Content"
"MULTIPLE_CHOICES"    --> "300 Multiple Choices"
"MOVED"               --> "301 Moved Permanently"
"REDIRECT"            --> "302 Found"
"NOT_MODIFIED"        --> "304 Not Modified"
"BAD_REQUEST"         --> "400 Bad Request"
"AUTH_REQUIRED"       --> "401 Authorization Required"
"FORBIDDEN"           --> "403 Forbidden"
"NOT_FOUND"           --> "404 Not Found"
"METHOD_NOT_ALLOWED"  --> "405 Method Not Allowed"
"NOT_ACCEPTABLE"      --> "406 Not Acceptable"
"LENGTH_REQUIRED"     --> "411 Length Required"
"PRECONDITION_FAILED" --> "412 Rrecondition Failed"
"SERVER_ERROR"        --> "500 Internal Server Error"
"NOT_IMPLEMENTED"     --> "501 Method Not Implemented"
"BAD_GATEWAY"         --> "502 Bad Gateway"
"VARIANT_ALSO_VARIES" --> "506 Variant Also Negotiates"

例:

cgi = CGI.new('html3')
print cgi.header({"charset" => "shift_jis", "status" => "OK"})
print "<html><head><title>TITLE</title></head>\r\n"
print "<body>BODY</body></html>\r\n"
out(options = "text/html") { .... }

HTTP ヘッダと、ブロックで与えられた文字列を標準出力に出力します。

例:

cgi = CGI.new
cgi.out{ "string" }
  # Content-Type: text/html
  # Content-Length: 6
  #
  # string

cgi.out("text/plain"){ "string" }
  # Content-Type: text/plain
  # Content-Length: 6
  #
  # string

cgi.out({"nph"        => true,
         "status"     => "OK",  # == "200 OK"
         "server"     => ENV['SERVER_SOFTWARE'],
         "connection" => "close",
         "type"       => "text/html",
         "charset"    => "iso-2022-jp",
           # Content-Type: text/html; charset=iso-2022-jp
         "language"   => "ja",
         "expires"    => Time.now + (3600 * 24 * 30),
         "cookie"     => [cookie1, cookie2],
         "my_header1" => "my_value",
         "my_header2" => "my_value"}){ "string" }

HEADリクエスト (REQUEST_METHOD == "HEAD") の場合は HTTP ヘッダのみを出力します。

charset が "iso-2022-jp"・"euc-jp"・"shift_jis" のいずれかで ある場合は文字列エンコーディングを自動変換し、language を "ja"にします。

print(*strings)

引数の文字列を標準出力に出力します。 cgi.print は $DEFAULT_OUTPUT.print と等価です。

例:

cgi = CGI.new
cgi.print "This line is a part of content body.\r\n"

定数

CR
EOL
HTTP_STATUS
LF
NEEDS_BINMODE
PATH_SEPARATOR
REVISION
RFC822_DAYS
RFC822_MONTHS

Methods

Classes