이런 상황을 맞닥뜨렸는데 매번 중복의 시작 부분을 일치시켰습니다.
$file = 'push_1113_20150105000052430.txt'; $file2 = 'confirm_push_1114_20150105000052430.txt'; preg_match('/^(get|push|admin).*.txt/', $file, $rs); preg_match('/^confirm.*.txt/', $file2, $rs2); echo '<pre class="brush:php;toolbar:false">';print_r($rs); echo '<pre class="brush:php;toolbar:false">';print_r($rs2); exit;
결과는 다음과 같습니다.
Array ( [0] => push_1113_20150105000052430.txt [1] => push ) <pre class="brush:php;toolbar:false">Array ( [0] => confirm_push_1114_20150105000052430.txt )
첫 번째 결과에 두 개의 푸시 중복이 일치하는 것을 볼 수 있습니다. 무슨 일이 일어나고 있는 걸까요? ?
어떻게 된 것인지 모르겠습니다. 여러 가지를 시도한 후 다음과 같이 변경했습니다.
preg_match('/^[get|push|admin].*.txt/', $file, $rs);
그냥 괄호만 넣으세요. 대괄호를 사용하면 결과는 다음과 같습니다.
Array ( [0] => push_1113_20150105000052430.txt )
이유는 아직 알 수 없지만 ()와 []의 차이로 인해 발생하는 것으로 보입니다.
이상에서는 정규식 일치로 인해 발생하는 중복 항목 문제를 관련 측면을 포함하여 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.