|
@@ -625,6 +625,60 @@ function api_remove_trailing_slash($path) {
|
|
|
return substr($path, -1) == '/' ? substr($path, 0, -1) : $path;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * Checks the RFC 3986 syntax of a given URL.
|
|
|
+ * @param string $url The URL to be checked.
|
|
|
+ * @param bool $absolute Whether the URL is absolute (beginning with a scheme such as "http:").
|
|
|
+ * @return bool Returns the URL if it is valid, FALSE otherwise.
|
|
|
+ * This function is an adaptation from the function valid_url(), Drupal CMS.
|
|
|
+ * @link http://drupal.org
|
|
|
+ * Note: The built-in function filter_var($urs, FILTER_VALIDATE_URL) has a bug for some versions of PHP.
|
|
|
+ * @link http://bugs.php.net/51192
|
|
|
+ */
|
|
|
+function api_valid_url($url, $absolute = false) {
|
|
|
+ if ($absolute) {
|
|
|
+ if (preg_match("
|
|
|
+ /^ # Start at the beginning of the text
|
|
|
+ (?:ftp|https?|feed):\/\/ # Look for ftp, http, https or feed schemes
|
|
|
+ (?: # Userinfo (optional) which is typically
|
|
|
+ (?:(?:[\w\.\-\+!$&'\(\)*\+,;=]|%[0-9a-f]{2})+:)* # a username or a username and password
|
|
|
+ (?:[\w\.\-\+%!$&'\(\)*\+,;=]|%[0-9a-f]{2})+@ # combination
|
|
|
+ )?
|
|
|
+ (?:
|
|
|
+ (?:[a-z0-9\-\.]|%[0-9a-f]{2})+ # A domain name or a IPv4 address
|
|
|
+ |(?:\[(?:[0-9a-f]{0,4}:)*(?:[0-9a-f]{0,4})\]) # or a well formed IPv6 address
|
|
|
+ )
|
|
|
+ (?::[0-9]+)? # Server port number (optional)
|
|
|
+ (?:[\/|\?]
|
|
|
+ (?:[\w#!:\.\?\+=&@$'~*,;\/\(\)\[\]\-]|%[0-9a-f]{2}) # The path and query (optional)
|
|
|
+ *)?
|
|
|
+ $/xi", $url)) {
|
|
|
+ return $url;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return preg_match("/^(?:[\w#!:\.\?\+=&@$'~*,;\/\(\)\[\]\-]|%[0-9a-f]{2})+$/i", $url) ? $url : false;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * Checks whether a given string looks roughly like an email address.
|
|
|
+ * Tries to use PHP built-in validator in the filter extension (from PHP 5.2), falls back to a reasonably competent regex validator.
|
|
|
+ * Conforms approximately to RFC2822
|
|
|
+ * @link http://www.hexillion.com/samples/#Regex Original pattern found here
|
|
|
+ * This function is an adaptation from the method PHPMailer::ValidateAddress(), PHPMailed module.
|
|
|
+ * @link http://phpmailer.worxware.com
|
|
|
+ * @param string $address The e-mail address to be checked.
|
|
|
+ * @return mixed Returns the e-mail if it is valid, FALSE otherwise.
|
|
|
+ */
|
|
|
+function api_valid_email($address) {
|
|
|
+ if (function_exists('filter_var')) { //Introduced in PHP 5.2
|
|
|
+ return filter_var($address, FILTER_VALIDATE_EMAIL);
|
|
|
+ } else {
|
|
|
+ return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address) ? $address : false;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
/* PROTECTION FUNCTIONS
|
|
|
Use these functions to protect your scripts. */
|