2012-02-20 6 views
1

rDNS를 설정하기 위해 웹 사이트를 업데이트하고 있습니다. 그러나 여기에서 내 문제를 어떻게 처리하는지에 대해 의견을 말합니다. 모든 IP (IPv4)는 $aIP이라는 배열에 있습니다. 지금은이 같은 목록이 있습니다HTML에서 텍스트 추출 중

<tr><td>1.2.3.4</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=1">myserver.com</a></td></tr> 
<tr><td>1.2.3.5</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=2"><i>not set</i></a></td></tr> 
<tr><td>1.2.3.6</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=3"><i>not set</i></a></td></tr> 
<tr><td>1.2.3.7</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=4">test.myserver.com</a></td></tr> 
<tr><td>1.2.3.8</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=5"><i>not set</i></a></td></tr> 
<tr><td>1.2.3.9</td><td>hostname.bla.com</td><td><a href="edit-reverse.cgi?id=6"><i>not set</i></a></td></tr> 

가 지금은 (이 경우 중 하나 myserver.com 또는 not set 또는 test.myserver.com) 현재의 RDN에 값을 필요로하고 내가 가치하거나 (edit-reverse.cgi?id=1 또는 1에 연결하는 전체 URL이 필요합니다)는 배열 $aIP의 IP 주소에 연결됩니다.

1.2.3.4 => 1, myserver.com 
1.2.3.5 => 2, not set 
1.2.3.6 => 3, not set 
1.2.3.7 => 4, test.myserver.com 
1.2.3.8 => 5, not set 
1.2.3.9 => 6, not set 

내가 $aIP 배열에있을 수있는 그 모든 IP 주소 명심하십시오 : (오히려 배열이나 뭔가를하지 특히이 출력 형식)

이 예상 된 출력 될 것이다 기본적으로 HTML 코드를 반복하고 $aIP 배열에 따라 값을 검색해야합니다.

정규식 사용에 대해 생각하고 있었지만 그다지 잘 모르는 경우 매우 비효율적 인 코드가 될 수 있습니다. 이것을 처리하는 가장 좋은 방법은 무엇입니까?

+0

HTML 구문 분석기를 사용하여이 HTML을 구문 분석 한 적이 있습니까? – Borealid

+1

http://simplehtmldom.sourceforge.net/ – Crontab

+0

당신이하고 싶지 않은 것은 정규 표현식을 사용하는 것입니다. 이유는 다음과 같습니다. http://htmlparsing.com/regexes –

답변

2

나는 기본 기능을 사용하여 완벽한 솔루션을 발견했습니다

/*** a new dom object ***/ 
$dom = new domDocument; 

/*** load the html into the object ***/ 
$dom->loadHTML($html); 

/*** discard white space ***/ 
$dom->preserveWhiteSpace = false; 

/*** the table by its tag name ***/ 
$tables = $dom->getElementsByTagName('table'); 

/*** get all rows from the table ***/ 
$rows = $tables->item(0)->getElementsByTagName('tr'); 

/*** loop over the table rows ***/ 
foreach ($rows as $row) 
{ 
    /*** get each column by tag name ***/ 
    $cols = $row->getElementsByTagName('td'); 
    /*** echo the values ***/ 
    echo $cols->item(0)->nodeValue.'<br />'; 
    echo $cols->item(1)->nodeValue.'<br />'; 
    echo $cols->item(2)->nodeValue; 
    echo '<hr />'; 
} 

모든 http://www.phpro.org/examples/Parse-HTML-With-PHP-And-DOM.html

감사에서 발견.