Initial commit.
This commit is contained in:
110
lib/php/monica/rfc1738.inc.php
Normal file
110
lib/php/monica/rfc1738.inc.php
Normal file
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
// File name: rfc1738.inc.php
|
||||
// Description: PHP regular expressions for RFC 1738 URL patterns
|
||||
// Date: 2004-02-11
|
||||
// Author: imacat <imacat@pristine.com.tw>
|
||||
// Copyright: Copyright (C) 2004-2007 Pristine Communications
|
||||
|
||||
// Set the include path
|
||||
if (!defined("INCPATH_SET")) {
|
||||
require_once dirname(__FILE__) . "/incpath.inc.php";
|
||||
}
|
||||
// Referenced subroutines
|
||||
require_once "monica/rfc822.inc.php";
|
||||
require_once "monica/html401.inc.php";
|
||||
|
||||
define("RFC1738_ALPHA", "[A-Za-z]");
|
||||
define("RFC1738_DIGIT", "\\d");
|
||||
define("RFC1738_DIGITS", "\\d+");
|
||||
define("RFC1738_HEX", "[\\dA-Fa-f]");
|
||||
define("RFC1738_ALPHADIGIT", "[A-Za-z\\d]");
|
||||
define("RFC1738_SAFE", "[$\\-_\\.+]");
|
||||
define("RFC1738_EXTRA", "[!*'(),]");
|
||||
define("RFC1738_ESCAPE", "%" . RFC1738_HEX . "{2}");
|
||||
define("RFC1738_RESERVED", "[;\\/?:@&=]");
|
||||
// Alpha, digit, safe, extra
|
||||
define("RFC1738_UNRESERVED", "[A-Za-z\\d$\\-_\\.+!*'(),]");
|
||||
// Unreserved, reserved, escape
|
||||
define("RFC1738_XCHAR", "(?:[A-Za-z\\d$\\-_\\.+!*'(),;\\/?:@&=]|" . RFC1738_ESCAPE . ")");
|
||||
define("RFC1738_UCHAR", "(?:" . RFC1738_UNRESERVED . "|" . RFC1738_ESCAPE . ")");
|
||||
|
||||
define("RFC1738_SCHEME", "[A-Za-z\\d+\\-\\.]+");
|
||||
define("RFC1738_DOMAINLABEL", "(?:" . RFC1738_ALPHADIGIT . "|"
|
||||
. RFC1738_ALPHADIGIT . "(?:" . RFC1738_ALPHADIGIT . "|-)*" . RFC1738_ALPHADIGIT . ")");
|
||||
define("RFC1738_TOPLABEL", "(?:" . RFC1738_ALPHA . "(?:" . RFC1738_ALPHADIGIT . "|-)*" . RFC1738_ALPHADIGIT . "|"
|
||||
. RFC1738_ALPHA . ")");
|
||||
define("RFC1738_HOSTNAME", "(?:" . RFC1738_DOMAINLABEL . "\\.)*" . RFC1738_TOPLABEL);
|
||||
define("RFC1738_HOSTNUMBER", "\\d+\\.\\d+\\.\\d+\\.\\d+");
|
||||
define("RFC1738_HOST", "(?:" . RFC1738_HOSTNAME . "|" . RFC1738_HOSTNUMBER . ")");
|
||||
define("RFC1738_PORT", RFC1738_DIGITS);
|
||||
define("RFC1738_USER", "(?:" . RFC1738_UCHAR . "|[;?&=])*");
|
||||
define("RFC1738_PASSWORD", "(?:" . RFC1738_UCHAR . "|[;?&=])*");
|
||||
define("RFC1738_HOSTPORT", RFC1738_HOST . "(?::" . RFC1738_PORT . ")?");
|
||||
define("RFC1738_LOGIN", "(?:" . RFC1738_USER . "(?::" . RFC1738_PASSWORD . ")?@)?" . RFC1738_HOSTPORT);
|
||||
|
||||
// FTP, also section 3.2
|
||||
define("RFC1738_FTPTYPE", "[AIDaid]");
|
||||
define("RFC1738_FSEGMENT", "(?:" . RFC1738_UCHAR . "|[?:@&=])*");
|
||||
define("RFC1738_FPATH", RFC1738_FSEGMENT . "(?:\\/" . RFC1738_FSEGMENT . ")*");
|
||||
define("RFC1738_FTPURL", "[fF][tT][pP]:\\/\\/" . RFC1738_LOGIN . "(?:\\/" . RFC1738_FPATH . "(?:;type=" . RFC1738_FTPTYPE . ")?)?");
|
||||
|
||||
// FILE
|
||||
define("RFC1738_FILEURL", "[fF][iI][lL][eE]:\\/\\/(?:" . RFC1738_HOST . "|localhost)?\\/" . RFC1738_FPATH);
|
||||
|
||||
// HTTP, also section 3.3
|
||||
define("RFC1738_HSEGMENT", "(?:" . RFC1738_UCHAR . "|[;:@&=])*");
|
||||
define("RFC1738_SEARCH", "(?:" . RFC1738_UCHAR . "|[;:@&=])*");
|
||||
define("RFC1738_HPATH", RFC1738_HSEGMENT . "(?:\\/" . RFC1738_HSEGMENT . ")*");
|
||||
// hostport should be login
|
||||
define("RFC1738_HTTPURL", "[hH][tT][tT][pP]:\\/\\/" . RFC1738_HOSTPORT . "(?:\\/" . RFC1738_HPATH . "(?:\\?" . RFC1738_SEARCH . ")?)?");
|
||||
|
||||
// Local fix to HTTP URL
|
||||
// hsegment does not include the tide "~" character (users' home direcories).
|
||||
// It is a common practice now.
|
||||
define("RFC1738_LOCAL_HSEGMENT", "(?:" . RFC1738_UCHAR . "|[;:@&=~])*");
|
||||
// hostport should be login
|
||||
define("RFC1738_LOCAL_HTTPURL", str_replace(RFC1738_HOSTPORT, RFC1738_LOGIN,
|
||||
str_replace(RFC1738_HSEGMENT, RFC1738_LOCAL_HSEGMENT, RFC1738_HTTPURL))
|
||||
. "(?:#" . HTML401_ID . ")?");
|
||||
// HTTPS does not exist in RFC 1738
|
||||
define("RFC1738_LOCAL_HTTPSURL", str_replace("[hH][tT][tT][pP]:", "[hH][tT][tT][pP][sS]:", RFC1738_HTTPURL));
|
||||
|
||||
// GOPHER
|
||||
define("RFC1738_GTYPE", RFC1738_XCHAR);
|
||||
define("RFC1738_SELECTOR", RFC1738_XCHAR . "*");
|
||||
define("RFC1738_GOPHERP_STRING", RFC1738_XCHAR . "*");
|
||||
define("RFC1738_GOPHERURL", "[gG][oO][pP][hH][eE][rR]:\\/\\/" . RFC1738_HOSTPORT . "(?:\\/(?:" . RFC1738_GTYPE . "(?:" . RFC1738_SELECTOR . "(?:%09" . RFC1738_SEARCH . "(?:" . RFC1738_GOPHERP_STRING . ")?)?)?)?)?");
|
||||
|
||||
// MAILTO
|
||||
define("RFC1738_MAILTOURL", "[mM][aA][iI][lL][tT][oO]:" . RFC822_ADDR_SPEC);
|
||||
|
||||
// NEWS
|
||||
define("RFC1738_GROUP", RFC1738_ALPHA . "[A-Za-z\\d\\-\\.+_]*");
|
||||
define("RFC1738_ARTICLE", "(?:" . RFC1738_UCHAR . "|[;\\/?:&=])+@" . RFC1738_HOST);
|
||||
define("RFC1738_GROUPPART", "(?:\\*|" . RFC1738_GROUP . "|" . RFC1738_ARTICLE . ")");
|
||||
define("RFC1738_NEWSURL", "[nN][eE][wW][sS]:" . RFC1738_GROUPPART);
|
||||
|
||||
// NNTP
|
||||
define("RFC1738_NNTPURL", "[nN][nN][tT][pP]:\\/\\/" . RFC1738_HOSTPORT . "\\/" . RFC1738_GROUP . "(?:\\/\\d+)?");
|
||||
|
||||
// TELNET
|
||||
define("RFC1738_TELNETURL", "[tT][eE][lL][nN][eE][tT]:\\/\\/" . RFC1738_LOGIN . "\\/?");
|
||||
|
||||
// WAIS
|
||||
define("RFC1738_DATABASE", RFC1738_UCHAR . "*");
|
||||
define("RFC1738_WTYPE", RFC1738_UCHAR . "*");
|
||||
define("RFC1738_WPATH", RFC1738_UCHAR . "*");
|
||||
define("RFC1738_WAISDATABASE", "[wW][aA][iI][sS]:\\/\\/" . RFC1738_HOSTPORT . "\\/" . RFC1738_DATABASE);
|
||||
define("RFC1738_WAISINDEX", "[wW][aA][iI][sS]:\\/\\/" . RFC1738_HOSTPORT . "\\/" . RFC1738_DATABASE . "\\?" . RFC1738_SEARCH);
|
||||
define("RFC1738_WAISDOC", "[wW][aA][iI][sS]:\\/\\/" . RFC1738_HOSTPORT . "\\/" . RFC1738_DATABASE . "\\/" . RFC1738_WTYPE . "\\/" . RFC1738_WPATH);
|
||||
define("RFC1738_WAISURL", "(?:" . RFC1738_WAISDOC . "|" . RFC1738_WAISINDEX . "|" . RFC1738_WAISDATABASE . ")");
|
||||
|
||||
// PROSPERO
|
||||
define("RFC1738_FIELDNAME", "(?:" . RFC1738_UCHAR . "|[?:@&])*");
|
||||
define("RFC1738_FIELDVALUE", "(?:" . RFC1738_UCHAR . "|[?:@&])*");
|
||||
define("RFC1738_FIELDSPEC", ";" . RFC1738_FIELDNAME . "=" . RFC1738_FIELDVALUE);
|
||||
define("RFC1738_PSEGMENT", "(?:" . RFC1738_UCHAR . "|[?:@&=])*");
|
||||
define("RFC1738_PPATH", RFC1738_PSEGMENT . "(?:\\/" . RFC1738_PSEGMENT . ")*");
|
||||
define("RFC1738_PROSPEROURL", "[pP][rR][oO][sS][pP][eE][rR][oO]:\\/\\/" . RFC1738_HOSTPORT . "\\/" . RFC1738_PPATH . "(?:" . RFC1738_FIELDSPEC . ")*");
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user