2010-12-02 13 views
2

PHP는 문자열에서 주어진 값의 첫 번째 인스턴스의 위치를 ​​찾기 위해 strpos() 함수를 가지고 있습니다. 문자열의 배열 인 바늘로이를 수행하는 방법이 있습니까?문자열에서 문자열 배열의 첫 번째 위치 찾기

$str = '1st and 3rd'; 

str_array_pos($str, array('st', 'nd', 'rd', 'th')) //would return 1 because of 'st' 
+0

당신은'오버 foreach' 수에서 시작하기 때문에 1이 아닌한다 needle 배열을 만들려면'strpos()'를 실행하고 결과를 배열에 저장하십시오. 당신은 모든 결과의'min()'을 찾고있다. – svens

답변

3

당신은 하나를 직접 작성할 수 그런데

function str_array_pos($string, $array) { 
    for ($i = 0, $n = count($array); $i < $n; $i++) 
    if (($pos = strpos($string, $array[$i])) !== false) 
     return $pos; 
    return false; 
} 

를, 당신의 예에서 반환 값은 0이어야하며 배열 인덱스는 0

+1

이것은 항상 바늘 열의 첫 번째 발생 위치를 반환하지 않습니다. – svens

+0

@svens : 수정되었습니다. :) – casablanca

+0

대단히 고마워요! – babonk

0

array_search()===false와 함께, 테스트를 그렇게 할 것입니다 : 그것은를 선두를 줄 것이다.

+2

전체 비교를 수행합니다. 하위 문자열에는 작동하지 않습니다. – casablanca

+0

두 번째 생각에, 나는 이것이 당신의 상황에 효과가 있다고 생각하지 않습니다. @ 카사 블랑카 - 당신이 논평 할 때 알아봤을 때, 당신의 방식은 틀림없이 +1입니다. – Ben

관련 문제