정규 표현식에 익숙하지 않습니다. 배열에서 첫 번째 일치 단어 다음에 특정 단어를 찾는 함수를 만들었습니다. 코드는특정 단어 다음에 단어 찾기
$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이지만 십진수는 11192.75로 표시하고 싶습니다.
제 오류를 수정하십시오.
$result=preg_match_all("/(?<=(".$key."))(\s\w*)/",$smsdata,$networkID);
결과 NER13082010132400255 및 8183 // 여기서 demical은 무시됩니다.
$result=preg_match_all("/(?<=(".$key."))\s*(\d*\.?\d*)/",$smsdata,$networkID);
이 결과를 제공 "빈"과 8183.79 // 여기에 첫 번째 결과가 비어
내 욕망의 결과는 NER13082010132400255 및 8183.79
나는 그것이 다른 경우를의 – newcomer
가능한 중복 일부에서 잘못된 결과를 얻을로 내 질문을 수정할 수 있습니다 이는 균형 제공 [정규식을 : 식 후 첫 번째 단어와 일치하는 방법 (HTTP : // 유래 .com/questions/546220/regex-how-to-first-after-an-expression) – hakre