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
							 |