2012-02-07 2 views
1

델리 미터로 ++++가있는 HTML 목록 항목이있는 파일을 읽으려고합니다. 기본적으로 배열의 각 항목을 검색하여 "nmb"라는 텍스트 (클래스에 저장 됨)를 찾고 "nmb"가있는 배열의 모든 항목을 표시하려고합니다. 그러나 현재 코드가 작동하지 않습니다. 그것은 아무것도 표시하지 않습니다. 그리고 오류가 없습니다. 내가 여기서 무엇을 놓치고 있니?배열 결과를 반환합니까?

<?php 
$term = "nmb"; 
$f_contents = file_get_contents("../includes/inc-condo-list.php"); //get the entire file 
$array = explode("++++",$f_contents); //explode (create an array) seperated by new line elements 
$datotal = count($array); //gives me a TOTAL count.. maybe for later use 


foreach ($array as $str){ //go through each item in array 
    if(!in_array($term, $array)) { 
    echo $str; 
    } 
} 

unset ($array); 

?> 

다음은 파일 읽기에서 가져온 목록 항목의 예입니다.

++++ 
    <li class="condo mb"> <a class="condos" href="blah.html"> <img src="someimg.jpg" alt="Narf" /></a> <br /> 
    <a class="condos" href="somewhere.html">Some Link</a><br /> 
     4 &amp; 6 Bedrooms<br /> 

</li> 
    ++++ 
    <li class="condo nmb"> <a class="condos" href="blah.html"> <img src="someimg.jpg" alt="Narf" /></a> <br /> 
    <a class="condos" href="somewhere.html">Some Link</a><br /> 
     4 &amp; 6 Bedrooms<br /> 

</li> 
    ++++ 

어떤 도움도 감사하겠습니다. 고맙습니다.

답변

5

in_array은 정확한 값 일치를 찾습니다. 이런 식으로 대신 사용하십시오.

foreach ($array as $str){ //go through each item in array 
    if(strpos($str, $term) === false) { // if it's not present 
     echo $str; 
    } 
} 
+0

그리고 배열의 각 요소에 대해 한 번만 전체 배열에서 찾고 있습니다. – Adam

+0

내가 무슨 뜻인지 모르겠다. 다시 말 할 수 있겠 니? :) – Joe

+0

물론, 여러분이 분해 한 값은'++++'사이의 모든 섹션에 대한 요소를 가진 배열이 될 것입니다. 'in_array'는 주어진 배열의 모든 요소에서'$ term '을 찾습니다. (그래서 모든 섹션에서 찾을 것입니다.) 본질적으로,'! in_array ($ term, $ array)'에 대한 답은 루프를 반복하는 횟수에 관계없이 동일합니다. 내가 그때 말이야? (내가 너를 말할 때 - 나는 OP를 의미한다). – Adam

관련 문제