<?php 
if ( ! defined('_SBG_MO_REGISTER')) 			define('_SBG_MO_REGISTER', 				'SUBSCR');
if ( ! defined('_SBG_MO_REGISTER_FOR')) 		define('_SBG_MO_REGISTER_FOR', 			'SUBSCR_FOR');
if ( ! defined('_SBG_MO_PHONENUM_CHANGE')) 		define('_SBG_MO_PHONENUM_CHANGE', 		'PHONE_CHANGE');
if ( ! defined('_SBG_MO_PASSWORD_RECOVERY')) 	define('_SBG_MO_PASSWORD_RECOVERY', 	'PWD_RECOVER');
if ( ! defined('_SBG_MO_PASSWORD_CHANGE')) 		define('_SBG_MO_PASSWORD_CHANGE', 		'PWD_CHANGE');
if ( ! defined('_SBG_MO_VIP_REGISTER')) 		define('_SBG_MO_VIP_REGISTER', 			'REG_VIP');
if ( ! defined('_SBG_MO_PAY_TO_ACCOUNT')) 		define('_SBG_MO_PAY_TO_ACCOUNT', 		'PAY');
if ( ! defined('_SBG_MO_PAY_TO_ACCOUNT_FOR')) 	define('_SBG_MO_PAY_TO_ACCOUNT_FOR', 	'PAY_FOR');
if ( ! defined('_SBG_MO_UNSUBSCRIBE_SERVICE')) 	define('_SBG_MO_UNSUBSCRIBE_SERVICE', 	'UNSUBSCR');
if ( ! defined('_SBG_MO_SUPPOR_SERVICE')) 		define('_SBG_MO_SUPPOR_SERVICE', 		'SUPPORT');
if ( ! defined('_SBG_MO_SYNTAX_ERR')) 			define('_SBG_MO_SYNTAX_ERR', 			'SYNTAX_ERR');

Class Services_model
{
	private $_arySmsMO = array(
		_SBG_MO_REGISTER 			=> array('pattern' => '/^(DK)([[:blank:]])(SBG)$/'),
		_SBG_MO_REGISTER_FOR 		=> array('pattern' => '/^(DK)([[:blank:]])(SBG)([[:blank:]])([0-9]{10,11})$/'),
		_SBG_MO_PHONENUM_CHANGE 	=> array('pattern' => '/^(DDT)([[:blank:]])(SBG)([[:blank:]])([0-9]{10,11})([[:blank:]])([a-zA-Z0-9]{1,})$/'),
		_SBG_MO_PASSWORD_RECOVERY 	=> array('pattern' => '/^(MK)([[:blank:]])(SBG)$/'),
		_SBG_MO_VIP_REGISTER 		=> array('pattern' => '/^(VIP)([[:blank:]])(SBG)([[:blank:]])([a-zA-Z0-9]{1,})$/'),
		_SBG_MO_PAY_TO_ACCOUNT 		=> array('pattern' => '/^(NAP)([[:blank:]])(SBG)([[:blank:]])([0-9]{3,})$/'),
		_SBG_MO_PAY_TO_ACCOUNT_FOR 	=> array('pattern' => '/^(NAP)([[:blank:]])(SBG)([[:blank:]])([0-9]{3,})([[:blank:]])([0-9]{10,11})$/'),
		_SBG_MO_SUPPOR_SERVICE 		=> array('pattern' => '/^(HD)([[:blank:]])(SBG)$/'),
		_SBG_MO_UNSUBSCRIBE_SERVICE => array('pattern' => '/^(HUY)([[:blank:]])(SBG)$/')
	);
	
	public function __construct(){
		//parent::__construct();
	}
	
	public function messageAnalys ($message)
	{
		$aryMatched = array();	
		$aryContent = array();
		$result = FALSE;
		
		foreach ($this->_arySmsMO as $case => $pattern)
		{
			$result = preg_match($pattern['pattern'], strtoupper(trim($message)));
			if ((bool)$result) {
				$aryMatched = explode(' ', trim($message));
				break;
			}
		}
		
		$case = (bool)$result ? $case:_SBG_MO_SYNTAX_ERR;
		
		foreach($aryMatched as $k => $val) {
			if ($k > 1) $aryContent[] = $val;			
		}
		
		$aryResult = array('case' => $case, 'content' => $aryContent);
		return $aryResult;
	}
}

$mo = new Services_model();

var_dump($mo->messageAnalys('NAP SBG 15000 0988568786'));

