Esta es la contestación más exacta que encomtrarás compartir, pero primero mírala detenidamente y valora si se puede adaptar a tu trabajo.
Solución:
Mi primera respuesta es: refactorizar tu codigo. Si necesita el número total de columnas para construir el pie de página de la tabla, entonces la función que usa para construir el cuerpo de la tabla debería devolver ese número (y no solo el HTML).
Dicho esto, y solo en caso de que sea demasiado complicado (o no tenga control sobre ese código), puede simplemente contar por ti mismo, evitaría cualquier truco sobre colspan
porque su comportamiento no es homogéneo (y tampoco está validado).
Puede contar fácilmente el número de celdas usando la primera fila (si la tabla está bien formada, todas las filas tienen el mismo número de columnas).
La primera solución ingenua sería split()
HTML tbody luego a substr_count()
los
tbody
y no se las arregla colspan
de esas células).
Una mejor solución implica una pequeña analizador HTML (vea esta excelente publicación aquí en SO para obtener una lista buena y detallada), cuando tenga DOM entonces puede contar fácilmente los TD y verificar su attributes (Lo digo de antemano: no, no puedes usar expresiones regulares para analizar HTML).
Para ser honesto, creo que la refactorización es mucho más adecuada…