고유 한 테이블 ID를 가진 다른 테이블이있는 거대한 html 문서가 있습니다. 다음과 같은 것 :
<table class="my_table" id="table_id1">
<tr class="odd"><td>Line 1</td></tr>
<tr class="even"><td>Line 2</td></tr>
<tr class="odd"><td>Line 3</td></tr>
<tr class="even"><td>Line 4</td></tr>
</table>
<table class="my_table" id="table_id2">
<tr class="odd"><td>Line 1</td></tr>
<tr class="even"><td>Line 2</td></tr>
<tr class="odd"><td>Line 3</td></tr>
</table>
preg_match를 사용하여 특정 테이블의 모든 행의 HTML을 찾을 수 있습니까?
다음 코드를 시도했습니다.
preg_match('/<table[^>]*id="table_id2">(<tr[^>]*><td>[^>]*<\/td><\/tr>)+/', $html, $matches);
//$html variable contains the html.
그러나 다음과 같은 출력을 반환합니다.
Array
(
[0] => Array
(
[0] => <table class="my_table" id="table_id2"><tr class="odd"><td>Line 1</td></tr><tr class="even"><td>Line 2</td></tr><tr class="odd"><td>Line 3</td></tr>
)
[1] => Array
(
[0] => <tr class="odd"><td>Line 3</td></tr>
)
)
하지만 다음과 같은 출력이 필요합니다.
Array
(
[0] => Array
(
[0] => <table class="my_table" id="table_id2"><tr class="odd"><td>Line 1</td></tr><tr class="even"><td>Line 2</td></tr><tr class="odd"><td>Line 3</td></tr>
)
[1] => Array
(
[0] => <tr class="odd"><td>Line 1</td></tr>
[1] => <tr class="odd"><td>Line 2</td></tr>
[2] => <tr class="odd"><td>Line 3</td></tr>
)
)
가능합니까? 도와주세요.
HTML 구문 분석에 정규식을 사용해서는 안됩니다. PHP에는이를위한 훌륭한 도구 인 DOMDocument가 있습니다. 그것을 사용하면 정규식으로는 불가능하거나 거의 불가능한 많은 일을 할 수 있습니다. 샘플은 다음과 같습니다.
$sHtml = '<table class="my_table" id="table_id1">
<tr class="odd"><td>Line 1</td></tr>
<tr class="even"><td>Line 2</td></tr>
<tr class="odd"><td>Line 3</td></tr>
<tr class="even"><td>Line 4</td></tr>
</table>
<table class="my_table" id="table_id2">
<tr class="odd"><td>Line 1</td></tr>
<tr class="even"><td>Line 2</td></tr>
<tr class="odd"><td>Line 3</td></tr>
</table>';
$rDoc = new DOMDocument();
$rDoc->loadHTML($sHtml);
$sId = 'table_id2';
//found table:
$rTable = $rDoc->getElementById($sId);
foreach($rTable->childNodes as $rItem)
{
//do something with item:
//var_dump($rItem);
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다