mirror of
				https://github.com/nerzhul/ocsms.git
				synced 2025-10-28 08:57:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * ownCloud - ocsms
 | |
|  *
 | |
|  * This file is licensed under the Affero General Public License version 3 or
 | |
|  * later. See the COPYING file.
 | |
|  *
 | |
|  * @author Loic Blot <loic.blot@unix-experience.fr>
 | |
|  * @contributor: stagprom <https://github.com/stagprom/>
 | |
|  * @copyright Loic Blot 2014-2015
 | |
|  */
 | |
| 
 | |
| namespace OCA\OcSms\Lib;
 | |
| 
 | |
| 
 | |
| class PhoneNumberFormatter {
 | |
| 	public static function format ($pn) {
 | |
| 		$ipnrxp = array(					// match international numbers with 1,2,3 digits
 | |
| 			'#^(00|\+)(1\d\d\d)#',				// NANP
 | |
| 			'#^(00|\+)(2[1|2|3|4|5|6|8|9]\d)#',		// +2(1|2|3|4|5|6|8|9)x
 | |
| 			'#^(00|\+)(2[0|7])#',				// +2x
 | |
| 			'#^(00|\+)(3[5|7|8]\d)#',			// +3(5|7|8)x
 | |
| 			'#^(00|\+)(3[0|1|2|3|4|6|9])#',			// +3x
 | |
| 			'#^(00|\+)(4[2]\d)#',				// +4(2)x
 | |
| 			'#^(00|\+)(4[0|1|3|4|5|6|7|8|9])#',		// +4x
 | |
| 			'#^(00|\+)(5[0|9]\d)#',				// +5(0|9)x
 | |
| 			'#^(00|\+)(5[1|2|3|4|5|6|7|8])#',		// +5x
 | |
| 			'#^(00|\+)(6[7|8|9]\d)#',			// +6(7|8|9)x
 | |
| 			'#^(00|\+)(6[0|1|2|3|4|5|6])#',			// +6x
 | |
| 			'#^(00|\+)(7)#',				// +7
 | |
| 			'#^(00|\+)(8[5|7|8|9]\d)#',			// +8(5|7|8|9)x
 | |
| 			'#^(00|\+)(8[1|2|3|4|6])#',			// +8x
 | |
| 			'#^(00|\+)(9[6|7|9]\d)#',			// +9(6|7|9)x
 | |
| 			'#^(00|\+)(9[0|1|2|3|4|5|8])#'			// +9x
 | |
| 		);
 | |
| 
 | |
| 		$ignrxp = array(					// match non digits and +
 | |
| 			'#[^\d\+\(\)\[\]\{\}]#',			// everything but digit, +, (), [] or {}
 | |
| 			'#(.+)([\(\[\{]\d*[\)\]\}])#',			// braces inside the number: +49 (0) 123 456789
 | |
| 			'#[^\d\+]#'					// everything but digits and +
 | |
| 		);
 | |
| 
 | |
| 		$ignrpl = array(					// replacements
 | |
| 			'',
 | |
| 			'$1',
 | |
| 			''
 | |
| 		);
 | |
| 		
 | |
| 		/*
 | |
| 			@TODO: make local settings in web-page
 | |
| 		*/
 | |
| 		$lpnrxp = array(						// match local numbers
 | |
| 			'#(^0)([^0])#'						// in germany : 0-xx[x[x]]-123456
 | |
| 		);								//
 | |
| 
 | |
| 		$lpnrpl = '+49$2';						// replace with +49 -xx[x[x]]-123456
 | |
| 		$tpn = trim($pn);
 | |
| 
 | |
| 		if (preg_match('#^[\d\+\(\[\{].*#',$tpn)) {			// start with digit, +, (, [ or {
 | |
| 			$fpn = preg_replace($ignrxp, $ignrpl, $tpn);		// replace everything but digits/+ with ''
 | |
| 			$xpn = preg_replace($lpnrxp, $lpnrpl, $fpn);		// replace local prenumbers
 | |
| 			$ypn = preg_replace($ipnrxp, '+$2', $xpn);		// format to international coding +x[x[x]].....
 | |
| 		} else {
 | |
| 			$ypn = $tpn;						// some SMS_adresses are strings
 | |
| 		}
 | |
| 
 | |
| 		return $ypn;
 | |
|     }
 | |
| };
 |