2013-02-04 3 views
1

와 비교할 나는 다음과 같은 코드가 다음 $page 변수에 배열의 모든 일치를 발견하도록되어사용 strpos 배열

if ((strpos($page,array('careers','employers','specialist-areas','job-search','job-details','job-apply','register-your-cv') == true))) { echo ' class="selected"'; } 

.

그러나 작동하지 않습니다 ... strpos 배열에 문제가 있습니까?

$page이 포함될 수 있습니다 무엇의 예 : "default careers page"

+0

'strpost'의 프로토 타입은 : int strpos (string $ haystack, mixed $ needle [, int $ offset = 0])'입니다. 두 번째 매개 변수에 관한 문서 :'needle이 문자열이 아니면 정수로 변환되어 문자의 서수 값으로 적용됩니다.' – Leri

+0

'$ page '가 배열의 여러 항목과 일치하면 어떻게 될까요? –

답변

1

사용이 코드 :이 같은 기능의 일종이 필요 그래서 당신은, 배열의 모든 요소에 $page를 찾을 필요가

$array = array(
    'careers', 
    'employers', 
    'specialist-areas', 
    'job-search', 
    'job-details', 
    'job-apply', 
    'register-your-cv', 
); 

foreach($array as $string) { 
    if((strpos($page,$string) !== false)) { 
     echo ' class="selected"'; 
    } 
} 
+1

두 개가 아닌 한 줄에 모든 것을 넣으시겠습니까? 지금은 여전히 ​​조금 읽을 수 있기 때문입니다. – PeeHaa

+0

완료. 나는 노력했다. – Megadv

1

Strpos 문자열 내에서 문자열을 찾는 것입니다. 필요한 것은 in_array입니다. 편집 : 질문을 잘못 이해했습니다. 작동해야하는 코드는 다음과 같습니다.

if((count(array_intersect(array('careers','employers','specialist-areas','job-search','job-details','job-apply','register-your-cv'), explode(' ', $page))))) 
{ 
    echo ' class="selected"'; 
} 
1

: 또한

function strpos_array($haystack, $needles) { 
    if (is_array($needles)) { 
     foreach ($needles as $str) { 
      if (is_array($str)) { 
       $pos = strpos_array($haystack, $str); 
      } else { 
       $pos = strpos($haystack, $str); 
      } 
      if ($pos !== FALSE) { 
       return $pos; 
      } 
     } 
    } else { 
     return strpos($haystack, $needles); 
    } 
} 
if (strpos_array($page, $pages) !== FALSE) { 
    echo ' class="selected"'; 
} 

을 만들 다음과 같이 코딩하지 마십시오 :

if (strpos($page, $url) == true) {} 

$page$url의 시작 부분에 있으면 strpos가 0을 반환하므로 비교가 실패합니다.