8cd1933527bdd2c2200a644cfe8794d6570f9fc8
[yaffs-website] / vendor / ezyang / htmlpurifier / library / HTMLPurifier / URIScheme / tel.php
1 <?php
2
3 /**
4  * Validates tel (for phone numbers).
5  *
6  * The relevant specifications for this protocol are RFC 3966 and RFC 5341,
7  * but this class takes a much simpler approach: we normalize phone
8  * numbers so that they only include (possibly) a leading plus,
9  * and then any number of digits and x'es.
10  */
11
12 class HTMLPurifier_URIScheme_tel extends HTMLPurifier_URIScheme
13 {
14     /**
15      * @type bool
16      */
17     public $browsable = false;
18
19     /**
20      * @type bool
21      */
22     public $may_omit_host = true;
23
24     /**
25      * @param HTMLPurifier_URI $uri
26      * @param HTMLPurifier_Config $config
27      * @param HTMLPurifier_Context $context
28      * @return bool
29      */
30     public function doValidate(&$uri, $config, $context)
31     {
32         $uri->userinfo = null;
33         $uri->host     = null;
34         $uri->port     = null;
35
36         // Delete all non-numeric characters, non-x characters
37         // from phone number, EXCEPT for a leading plus sign.
38         $uri->path = preg_replace('/(?!^\+)[^\dx]/', '',
39                      // Normalize e(x)tension to lower-case
40                      str_replace('X', 'x', $uri->path));
41
42         return true;
43     }
44 }
45
46 // vim: et sw=4 sts=4