2012-11-13 3 views
1

에 문자열 배열에 미리 정의 된 문구의 일치를 추출하지만 어떤 $phrase$string에서 발견되어 있는지 찾고 있기 때문이다 New York NY York NY

$phrases = array("New York NY","York NY","Wyoming MI","Wyoming Minnesota"); 
$string = ("I live in New York NY"); 

$matches = array(); 
foreach($phrases as $phrase) { 
    if(stripos($string,$phrase) !== false){ 
     $matches[] = $phrase; 
    } 
} 

$new_string = implode(" ",$matches); 

echo $new_string; 

답변

1
모두 stripos("I live in New York NY", "New York NY")

stripos("I live in New York NY", "York NY")!=== false입니다

당신은 단지 긴 텍스트를 선호 루프를 만들 수 있습니다

$phrases = array("New York NY","York NY","Wyoming MI","Wyoming Minnesota"); 
$string = ("I live in Wyoming Minnesota"); 
$matches = array(); 
foreach ($phrases as $phrase) { 
    $phrase = preg_quote($phrase, '/'); 
    if (preg_match("/\b$phrase\b/i", $string)) { 
     $matches[] = $phrase; 
    } 
} 
echo "<pre>"; 
print_r($matches); 

출력

Array 
(
    [0] => Wyoming Minnesota 
) 

는 preg_match/옵션 구분 @DaveRandom

+0

"나는 뉴욕 뉴욕에 살고 있습니다", "뉴욕에 살고 있습니다", "와이오밍 MI에 살고 있지만"나는 와이오밍 미네소타에 살고 있습니다 " – Lou

+0

@Lou 업데이트 된 코드보기 ..... – Baba

+0

당신의 도움을 주셔서 감사합니다. 업데이트 된 코드는 "나는 와이오밍 주 미네소타에 살고 있습니다"하지만 "뉴욕에 살고 있습니다"라는 이유로 실패합니다. 당신은 제가 올바른 길을 가도록 도왔습니다. 잘하면 여기에서 알아낼 수 있습니다. – Lou

0

을 얻고있다.

모두 New York NYYork NY$string에서 발견되는, 그래서 그들은 모두 $matches에 추가하고 있습니다.


나는 "큰 그림"이 무엇인지 확실하지 않다,하지만 당신은 위치 만 다음, 두 부분으로 $string을 분할 비교할 수

$places = array("New York NY","York NY","Wyoming MI","Wyoming Minnesota"); 
$strLive = "I live in "; 
$strLoc = "New York NY"; 

$matches = array(); 
foreach($places as $place) { 
    if($strLoc == $place){ 
     $matches[] = $place; 
    } 
} 
+0

는 단일 라인 입력 필드에서 미리 정의 된 미국 위치 문구를 추출하려고합니다. – Lou

관련 문제