httpstatus
httpstatus が流行りだけど僕は vi 使わないので php で。
preg_match_all があるので3分で実装出来ます。
(そのうち関数名間違いで1分浪費)
コード
<?php if ($argc < 2) { echo "php httpstatus.php <keyword> [<keyword2> [...]]".PHP_EOL; exit (-1); } grepStatusCode(array_splice($argv, 1)); exit (0); function grepStatusCode($keywords) { preg_match_all("/(\d{3})[^;]*;\s+([^:]+):\s*(.*)/", getStatusCode(), $codeMap); // codeMap => 0:lines, 1:codes, 2:sections, 3:messages foreach ($keywords as $keyword) { echo "$keyword:".PHP_EOL; foreach (array(1, 3) as $type) { foreach ($codeMap[$type] as $idx => $code) { if (stripos($code, $keyword) !== false) { echo "\t".$codeMap[1][$idx].": ".$codeMap[3][$idx].PHP_EOL; } } } } } function getStatusCode() { // http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1 return ' "100" ; Section 10.1.1: Continue | "101" ; Section 10.1.2: Switching Protocols | "200" ; Section 10.2.1: OK | "201" ; Section 10.2.2: Created | "202" ; Section 10.2.3: Accepted | "203" ; Section 10.2.4: Non-Authoritative Information | "204" ; Section 10.2.5: No Content | "205" ; Section 10.2.6: Reset Content | "206" ; Section 10.2.7: Partial Content | "300" ; Section 10.3.1: Multiple Choices | "301" ; Section 10.3.2: Moved Permanently | "302" ; Section 10.3.3: Found | "303" ; Section 10.3.4: See Other | "304" ; Section 10.3.5: Not Modified | "305" ; Section 10.3.6: Use Proxy | "307" ; Section 10.3.8: Temporary Redirect | "400" ; Section 10.4.1: Bad Request | "401" ; Section 10.4.2: Unauthorized | "402" ; Section 10.4.3: Payment Required | "403" ; Section 10.4.4: Forbidden | "404" ; Section 10.4.5: Not Found | "405" ; Section 10.4.6: Method Not Allowed | "406" ; Section 10.4.7: Not Acceptable | "407" ; Section 10.4.8: Proxy Authentication Required | "408" ; Section 10.4.9: Request Time-out | "409" ; Section 10.4.10: Conflict | "410" ; Section 10.4.11: Gone | "411" ; Section 10.4.12: Length Required | "412" ; Section 10.4.13: Precondition Failed | "413" ; Section 10.4.14: Request Entity Too Large | "414" ; Section 10.4.15: Request-URI Too Large | "415" ; Section 10.4.16: Unsupported Media Type | "416" ; Section 10.4.17: Requested range not satisfiable | "417" ; Section 10.4.18: Expectation Failed | "500" ; Section 10.5.1: Internal Server Error | "501" ; Section 10.5.2: Not Implemented | "502" ; Section 10.5.3: Bad Gateway | "503" ; Section 10.5.4: Service Unavailable | "504" ; Section 10.5.5: Gateway Time-out | "505" ; Section 10.5.6: HTTP Version not supported | extension-code '; }