Open-Source PHP Framework - Designed for rapid development of performance-oriented scalable applications

/mvc/components/validator

[return to app]
1 <?php
2
/**
3  * Validates user-entered data
4  */
5
class validatorComponent {
6     
/**
7      * Verifies a hex color (used in HTML/CSS) contains exactly six base-16 digits
8      *
9      * @param string $data
10      * @return boolean
11      */
12     
public function isValidHexColor($data) {
13         return (bool) 
preg_match('/[0-9ABCDEF]{6}/'$data);
14     }
15
16     
/**
17      * Verifies a URL is valid
18      *
19      * @param string $data
20      * @return boolean
21      */
22     
public function isValidURL($data) {
23         return (bool) 
preg_match('#(https?|ftp)://(www\.)?(\S+\.)+[^\.\s]{1,5}(:\d+)?([\\/]\S+)*?$#i'$data);
24     }
25
26     
/**
27      * Verifies an email is valid
28      *
29      * @param string $data
30      * @return boolean
31      */
32     
public function isValidEmail($data) {
33         
$datalen strlen($data);
34         return (
$datalen && $datalen <= 60 && preg_match('/([\w!#$%"*+\/=?`{}|~^-]+)@(([\w-]+\.)+[\w-]{2,})/',
 
$data));
35     }
36
37     
/**
38      * Verifies password is or is not valid
39      *
40      * @param string $pass
41      * @return mixed A string containing an error message (casts to bool-true) indicates an invalid pass
42      *               Bool-false indicates a valid password
43      */
44     
public function isInvalidPassword($pass) {
45         
$passlen strlen($pass);
46         if (
$passlen 6) {
47             
$error 'Password is too short';
48         }
49         if (
$passlen 16) {
50             
$error 'Password is too long';
51         }
52         if (
strpos($pass' ') !== false) {
53             
$error 'Passwords cannot contain spaces';
54         }
55         if (!isset(
$error)) {
56             
$passwithoutnumbers str_replace(range(0,9), ''$pass);
57             if (
$passwithoutnumbers == $pass || $passwithoutnumbers == '') {
58                 
$error 'Passwords must contain a mix of numbers and letters';
59             }
60         }
61         return (isset(
$error) ? $error false);
62     }
63
64     
/**
65      * Verifies telephone numbers
66      *
67      * @param mixed $data Phone number in numberic-format - alpha-chars like (443)300-VORK will be ignored (& then
 
fail)
68      * @
param string $country Country codecurrently US is the only validated numberother countries are only
 
checked
69      
*                        for having a minimal number of numeric characters
70      
* @return boolean
71      
*/
72     public function 
isValidTelephone($data$country 'US') {
73         if (
$country == 'US') {
74             
$return = (bool) preg_match('/\b([2-9]\d{2})[.\s -]?(([2-9]\d{2})[.\s -]?(\d{4}))\b/'$data);
75             if (
$return && substr($data33) == '555') {
76                 
$return false;
77             }
78         } else {
79             
$return = (strlen(get::component('filter')->getNumbersOnly($data)) > 6);
80         }
81         return 
$return;
82     }
83 }