$tokens = array(
'Status',
'StatusDetail',
'VendorTxCode',
'VPSTxId',
'TxAuthNo',
'Amount',
'AVSCV2',
'AddressResult',
'PostCodeResult',
'CV2Result',
'GiftAid',
'3DSecureStatus',
'CAVV',
'AddressStatus',
'CardType',
'Last4Digits',
'PayerStatus',
'CardType'
);
$output = array();
$data = array();
for ($i = count($tokens) - 1; $i >= 0; $i--){
$start = strpos($string, $tokens[$i]);
if ($start !== false) {
$data[$i]['start'] = $start;
$data[$i]['token'] = $tokens[$i];
}
}
sort($data);
for ($i = 0; $i < count($data); $i++){
$start = $data[$i]['start'] + strlen($data[$i]['token']) + 1;
if ($i == (count($data) - 1)) {
$output[$data[$i]['token']] = substr($string, $start);
} else {
$length = $data[$i+1]['start'] - $data[$i]['start'] - strlen($data[$i]['token']) - 2;
$output[$data[$i]['token']] = substr($string, $start, $length);
}
}
return $output;