'Nagad', 'Nagad' => 'Nagad', 'bKash' => 'bKash', '16216' => 'Rocket', 'upay' => 'Upay', 'tap.' => 'Tap', '16269' => 'OkWallet', 'IBBL .' => 'Cellfin', 'IPAY' => 'Ipay', 'iPAY' => 'Ipay', 'PathaoPay' => 'Pathao Pay' ]; $matchFound = false; $matchedFullName = ''; // Match provider if (array_key_exists($from, $mfs_providers)) { $matchFound = true; $matchedFullName = $mfs_providers[$from]; } else { foreach ($mfs_providers as $short => $full) { if (stripos($from, $short) !== false || stripos($text, $short) !== false) { $matchFound = true; $matchedFullName = $full; break; } } } if ($matchFound) { $sms_status = "review"; $provider_formats = [ 'bKash' => [ [ 'type' => 'sms1', 'format' => '/Cash In Tk (?[\d,]+\.\d{2}) from (?\d+) successful\. Fee Tk (?[\d,]+\.\d{2})\. Balance Tk (?[\d,]+\.\d{2})\. TrxID (?\w+) at (?\d{2}\/\d{2}\/\d{4} \d{2}:\d{2})/' ], [ 'type' => 'sms2', 'format' => '/You have received Tk (?[\d,]+\.\d{2}) from (?\d+)\. Fee Tk (?[\d,]+\.\d{2})\. Balance Tk (?[\d,]+\.\d{2})\. TrxID (?\w+) at (?\d{2}\/\d{2}\/\d{4} \d{2}:\d{2})/' ], [ 'type' => 'sms3', 'format' => '/You have received Tk (?[\d,]+\.\d{2}) from (?\d+)\. Ref .*?Fee Tk (?[\d,]+\.\d{2})\. Balance Tk (?[\d,]+\.\d{2})\. TrxID (?\w+) at (?\d{2}\/\d{2}\/\d{4} \d{2}:\d{2})/' ], [ 'type' => 'sms4', 'format' => '/You have received payment Tk (?[\d,]+\.\d{2}) from (?\d+)\. Fee Tk (?[\d,]+\.\d{2})\. Balance Tk (?[\d,]+\.\d{2})\. TrxID (?\w+) at (?\d{2}\/\d{2}\/\d{4} \d{2}:\d{2})/' ], [ 'type' => 'sms5', 'format' => '/You have received Tk (?[\d,]+\.\d{2}) from (?\d+)\.Ref .*?TrxID (?\w+) at (?\d{2}\/\d{2}\/\d{4} \d{2}:\d{2})/' ] ], 'Nagad' => [ [ 'type' => 'sms1', 'format' => '/Cash In Received\.\nAmount: Tk (?[\d,]+\.\d{2})\nUddokta: (?\d+)\nTxnID: (?[A-Z0-9]+)\nBalance: (?[\d,]+\.\d{2})\n(?\d{2}\/\d{2}\/\d{4}) (?