Files
selima-perl/lib/php/monica/rfc2396.inc.php
2026-03-10 21:31:43 +08:00

64 lines
3.0 KiB
PHP

<?php
// File name: rfc2396.inc.php
// Description: PHP regular expressions for RFC 2396 URL patterns
// Date: 2005-02-28
// Author: imacat <imacat@pristine.com.tw>
// Copyright: Copyright (C) 2005-2007 Pristine Communications
// Section 1.6
define("RFC2396_LOWALPHA", "[a-z]");
define("RFC2396_UPALPHA", "[A-Z]");
define("RFC2396_ALPHA", "[A-Za-z]");
define("RFC2396_DIGIT", "\\d");
define("RFC2396_ALPHANUM", "[A-Za-z\\d]");
// Section 2.2
define("RFC2396_RESERVED", "[;\\/?:@&=+$,]");
// Section 2.3
define("RFC2396_MARK", "[\\-_\\.!~*'()]");
// alphanum, mark
define("RFC2396_UNRESERVED", "[A-Za-z\\d\\-_\\.!~*'()]");
// Section 2.4.1
define("RFC2396_HEX", "[\\dA-Fa-f]");
define("RFC2396_ESCAPED", "%" . RFC2396_HEX . "{2}");
// Chapter 2
define("RFC2396_URIC", "(?:" . RFC2396_RESERVED . "|" . RFC2396_UNRESERVED . "|" . RFC2396_ESCAPED . ")");
// Section 2.4.3
define("RFC2396_CONTROL", "[\\x00-\\x1F\\x7F]");
define("RFC2396_SPACE", " ");
define("RFC2396_DELIMS", "[<>#%\"]");
define("RFC2396_UNWISE", "[{}|\\\\^\\[\\]`]");
// Section 3.1
define("RFC2396_SCHEME", "[A-Za-z][A-Za-z+\\-\\.]*");
// Section 3.2.1
define("RFC2396_REG_NAME", "(?:" . RFC2396_UNRESERVED . "|" . RFC2396_ESCAPED . "|[$,;:@&=+])+");
// Section 3.2.2
define("RFC2396_DOMAINLABEL", RFC2396_ALPHANUM . "(?:[A-Za-z\\d\\-]*" . RFC2396_ALPHANUM . ")?");
define("RFC2396_TOPLABEL", RFC2396_ALPHA . "(?:[A-Za-z\\d\\-]*" . RFC2396_ALPHANUM . ")?");
define("RFC2396_HOSTNAME", "(?:" . RFC2396_DOMAINLABEL . "\\.)*" . RFC2396_TOPLABEL . "\\.?");
define("RFC2396_IPV4ADDRESS", "\\d+\\.\\d+\\.\\d+\\.\\d+");
define("RFC2396_HOST", "(?:" . RFC2396_HOSTNAME . "|" . RFC2396_IPV4ADDRESS . ")");
define("RFC2396_PORT", "\\d*");
define("RFC2396_HOSTPORT", RFC2396_HOST . "(?::" . RFC2396_PORT . ")?");
define("RFC2396_USERINFO", "(?:" . RFC2396_UNRESERVED . "|" . RFC2396_ESCAPED . "|[;:&=+$,])*");
define("RFC2396_SERVER", "(?:(?:" . RFC2396_USERINFO . ")?" . RFC2396_HOSTPORT . ")?");
// Section 3.2
define("RFC2396_AUTHORITY", "(?:" . RFC2396_SERVER . "|" . RFC2396_REG_NAME . ")");
// Section 3.3
define("RFC2396_PCHAR", "(?:" . RFC2396_UNRESERVED . "|" . RFC2396_ESCAPED . "|[:@&=+$,])");
define("RFC2396_PARAM", RFC2396_PCHAR . "*");
define("RFC2396_SEGMENT", RFC2396_PCHAR . "*(?:;" . RFC2396_PARAM . ")*");
define("RFC2396_PATH_SEGMENTS", RFC2396_SEGMENT . "(?:\\/" . RFC2396_SEGMENT . ")*");
// Section 3.4
define("RFC2396_QUERY", RFC2396_URIC . "*");
// Chapter 3
define("RFC2396_URIC_NO_SLASH", "(?:" . RFC2396_UNRESERVED . "|" . RFC2396_ESCAPED . "|[;?:@&=+$,])");
define("RFC2396_OPAQUE_PART", RFC2396_URIC_NO_SLASH . "(?:" . RFC2396_URIC . "*)");
define("RFC2396_ABS_PATH", "\\/" . RFC2396_PATH_SEGMENTS);
define("RFC2396_NET_PATH", "\\/\\/" . RFC2396_AUTHORITY . "(?:" . RFC2396_ABS_PATH . ")?");
define("RFC2396_HIER_PART", "(?:" . RFC2396_NET_PATH . "|" . RFC2396_ABS_PATH . ")");
define("RFC2396_ABSOLUTEURI", RFC2396_SCHEME . ":(?:" . RFC2396_HIER_PART . "|" . RFC2396_OPAQUE_PART .")(?:\\?" . RFC2396_QUERY . ")?");
// Section 3.3
define("RFC2396_PATH", "(?:" . RFC2396_ABS_PATH . "|" . RFC2396_OPAQUE_PART . ")?");
?>