2013-08-27 4 views
2

에 내가 file_get_contents와 PHP를 가져 오기 HTML 페이지 느릅 나무를 가지고있다. PHP를 찾기 문자열은 HTML

는 HTML 페이지에이 같은 목록을 가지고 : 나는 문자열의 HTML을 넣어 file_get_contents를 사용하는 PHP 파일에

<div class="results"> 
<ul> 
    <li>Result 1</li> 
    <li>Result 2</li> 
    <li>Result 3</li> 
    <li>Result 4</li> 
    <li>Result 5</li> 
    <li>Result 6</li> 
    <li>Result 7</li> 
</ul> 

. 내가 원하는 것은 "결과 4"에서 HTML을 검색하는 것입니다. 발견되면, 필자는 목록 항목 (출력을 숫자로 원함)을 알고 싶습니다.

어떤 아이디어이 어떻게 달성하기 위해?

+2

사용하는 간단한 HTML DOM http://sourceforge.net/projects/simplehtmldom/ 구문 분석 HTML –

답변

4

PHP 함수 :

function getMatchedListNumber($content, $text){ 
    $pattern = "/<li ?.*>(.*)<\/li>/"; 
    preg_match_all($pattern, $content, $matches); 
    $find = false; 
    foreach ($matches[1] as $key=>$match) { 
     if($match == $text){ 
      $find = $key+1; 
      break; 
     } 
    } 
    return $find; 
} 

사용 :

$content = '<div class="results"> 
    <ul> 
     <li>Result 1</li> 
     <li>Result 2</li> 
     <li>Result 3</li> 
     <li>Result 4</li> 
     <li>Result 5</li> 
     <li>Result 6</li> 
     <li>Result 7</li> 
    </ul>'; 

$text = "Result 4"; 
echo getMatchedListNumber($content, $text); 

출력 : 목록 번호

4 
+0

Thnx 바히드, 그건 내가 필요한거야! –

+0

@LeonvanderVeen 일치하지 않으면'false'를 반환하는 함수를 업데이트했습니다. – hallaji

-1

이 유하여 수행 할 수 있습니다 폭발 기능

<?php 
$html="<div class='results'> 
<ul> 
    <li>Result 1</li> 
    <li>Result 2</li> 
    <li>Result 3</li> 
    <li>Result 4</li> 
    <li>Result 5</li> 
    <li>Result 6</li> 
    <li>Result 7</li> 
</ul>"; 
$array1 = explode("class='results'",$html); 
$array2 = explode('<li>',$array1[0]; 
$array3 = explode('</li>',$array2[4]); 
$result = $array3[0]; 
?> 
3

가능하면, 당신은 항상 HTML을 구문 분석 PHP의 DOM 라이브러리를 사용한다 노래. $html 문자열에서 전체 HTML (당신의 file_get_contents 기능의 결과)가

$dom = new DOMDocument; 
$dom->loadHTML($html); 
$lis = $dom->getElementsByTagName("li"); 
$index = 0; 
foreach ($lis as $li) { 
    $index++; 
    $value = (string) $li->nodeValue; 
    if ($value == "Result 4") { 
     echo $index; 
    } 
} 

. HTML이 더러운 경우 PHP 함수 tidy_repair_string을 사용하여 복구 할 수 있습니다.