2009-09-02 3 views
1

기본 문자열에 html 테이블이 있습니다. 표는 다음과 같습니다PHP가 포함 된 HTML 테이블의 열 개수를 계산합니다.

<TR> 
    <TD>asdf, dfg</TD><TD>0915</TD><TD>0945</TD><TD></TD><TD>15</TD><TD>45</TD><TD></TD><TD>1315</TD> 
</TR> 
<TR> 
    <TD>asdf, dfg</TD><TD>0915</TD><TD>0945</TD><TD></TD><TD>15</TD><TD>45</TD><TD></TD><TD>1315</TD> 
</TR> 
<TR> 
    <TD>asdf, dfg</TD><TD>0915</TD><TD>0945</TD><TD></TD><TD>15</TD><TD>45</TD><TD></TD><TD>1315</TD> 
</TR> 
<TR> 
    <TD>asdf, dfg</TD><TD>0915</TD><TD>0945</TD><TD></TD><TD>15</TD><TD>45</TD><TD></TD><TD>1315</TD> 
</TR>  

가 어떻게이 테이블이 얼마나 많은 열을 결정하기 위해 PHP를 사용하는 것이?

+0

하나의 tr 안에 또는 모든 테이블 내부에 몇 개의 td가 있는지 계산 하시겠습니까? – mck89

답변

2

카운트 substr_count()<TD> 년대 :

다음은 고려해야 할 하나의 HTML 파서입니다. 문자열에 둘 이상의 행이 포함되어 있으면 <TR>의 수를 계산하고 <TD>의 총 수를 <TR>의 수로 나눕니다.

+1

어때요? 님의 답변은? : P – Evernoob

+0

첫째, 작성자는 자신의 html이 잘못되었음을 명시하지 않았습니다. 두 번째로 문자열 을 태그 안에 넣으려면 대괄호를 해당 엔티티로 바꿔야하므로 substr_count()에 의해 catch되지 않습니다. – n1313

+0

@Evernoob : 무엇 때문에? – n1313

2

다른 사람이 언급했듯이, 유효한 HTML을 보장하고 테이블의 길이가 같은 행이 보장된다면 간단한 문자열 조작을 사용할 수 있습니다. 잘못된 HTML의 가능성이있는 경우,

function count_table_columns($html) { 
    $html = strtolower($html); 
    $rows = split('<tr>', $html); 
    foreach($rows as $row) { 
     if(!trim($row)) { continue; } 
     return substr_count($row, '<td>'); 
    } 
} 

<tr> 노드를 통해 다음 테이블을 분석 반복하는 HTML 파서를 사용하고 수 : <tr>에 문자열을 분할 한 다음 각 조각에 <td>의 수를 계산 서브 노드는 <td>입니다. http://sourceforge.net/projects/simplehtmldom/

+0

내 대답은 약간의 simplehtmldom 코드를 썼습니다 – JaseC

0

이 기본적으로 HTML 테이블 당신에게 열 수를 줄 것이다 $ 가장 큰

$table = $html->find('table',0); 

foreach($table->find('tr') as $tr) 
       { 
        $c=0; 
        foreach($tr->find('td') as $td) $c++;  
        if($c>$largest OR !isset($largest)) $largest = $c; 
       } 

에있는 열 수를 가져옵니다 simplehtmldom 코드입니다.

관련 문제