47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
<?php
 | 
						|
 | 
						|
/**
 | 
						|
 * Validates tel (for phone numbers).
 | 
						|
 *
 | 
						|
 * The relevant specifications for this protocol are RFC 3966 and RFC 5341,
 | 
						|
 * but this class takes a much simpler approach: we normalize phone
 | 
						|
 * numbers so that they only include (possibly) a leading plus,
 | 
						|
 * and then any number of digits and x'es.
 | 
						|
 */
 | 
						|
 | 
						|
class HTMLPurifier_URIScheme_tel extends HTMLPurifier_URIScheme
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @type bool
 | 
						|
     */
 | 
						|
    public $browsable = false;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @type bool
 | 
						|
     */
 | 
						|
    public $may_omit_host = true;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param HTMLPurifier_URI $uri
 | 
						|
     * @param HTMLPurifier_Config $config
 | 
						|
     * @param HTMLPurifier_Context $context
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function doValidate(&$uri, $config, $context)
 | 
						|
    {
 | 
						|
        $uri->userinfo = null;
 | 
						|
        $uri->host     = null;
 | 
						|
        $uri->port     = null;
 | 
						|
 | 
						|
        // Delete all non-numeric characters, non-x characters
 | 
						|
        // from phone number, EXCEPT for a leading plus sign.
 | 
						|
        $uri->path = preg_replace('/(?!^\+)[^\dx]/', '',
 | 
						|
                     // Normalize e(x)tension to lower-case
 | 
						|
                     str_replace('X', 'x', $uri->path));
 | 
						|
 | 
						|
        return true;
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
// vim: et sw=4 sts=4
 |