私は正規表現の専門家ではありません。配列から最初に一致した単語の後に特定の単語を見つける関数を作成しました。コードは
$searchkey1 = array('NUMBER', 'REF', 'TRANSACTION NUMBER');
$searchkey2 = array('CURRENT BALANCE RS.', 'NEW BALANCE IS');
$smsdata = "TRANSACTION NUMBER NER13082010132400255 TO RECHARGE 198 INR TO 9999999999 IS SUCCESSFUL. YOUR NEW BALANCE IS 8183.79 INR.";
function get_details($searchkey, $smsdata)
{
foreach ($searchkey as $key) {
$result = preg_match_all("/(?<=(" . $key . "))(\s\w*)/", $smsdata, $networkID);
$myanswer = @$networkID[0][0];
}
return $myanswer;
}
echo get_details($searchkey1, $smsdata);
echo "<BR>";
echo get_details($searchkey2, $smsdata);
私はこの機能を使って他の単語も調べています。10進数値以外の他の単語の検索が機能しています。ここで私のコード例では、戻り値は 11192 ですが、10 進数で 11192.75 を取得したいと思います。
エラーを修正してください。
$result=preg_match_all("/(?<=(".$key."))(\s\w*)/",$smsdata,$networkID);
結果 NER13082010132400255 および 8183 を返します //ここでは、デミカルは無視されます。
$result=preg_match_all("/(?<=(".$key."))\s*(\d*\.?\d*)/",$smsdata,$networkID);
結果を「空白」にして 8183.79 // ここでは最初の結果は空白です
私の希望の結果は NER13082010132400255 と 8183.79 です