我有一个包含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 :(得分:2)
正如其他人所提到的,如果你保证有效的HTML,并且保证表具有相等长度的行,你可以使用简单的字符串操作。拆分<tr>
上的字符串,然后计算每件中<td>
的数量:
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>');
}
}
如果HTML格式错误,请使用HTML解析器解析表,然后遍历<tr>
个节点,并计算<td>
类型的子节点。
这是一个要考虑的HTML解析器: http://sourceforge.net/projects/simplehtmldom/
答案 1 :(得分:2)
使用substr_count()
计算<TD>
。如果您的字符串包含多行,则计算<TR>
并将<TD>
的总数除以<TR>
的数量。
答案 2 :(得分:0)
这是simplehtmldom代码,基本上可以获取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;
}
$ maximum会给你列数。