Estoy trabajando en un proyecto que requiere convertir el correo electrónico html en texto. A continuación se muestra una versión simplificada del código HTML:Convertir la tabla HTML en texto
<table>
<tr>
<td width="10%"></td>
<td width="60%"> test product </td>
<td width="20%">5</td>
<td width="10%"> £50.00 </td>
</tr>
<tr>
<td></td>
<td colspan="3" width="100%"> Project Name: Test Project </td>
</tr>
<tr>
<td width="10%"> </td>
<td colspan="2" width="80%"> Page 1 : 01 New York 1.jpg </td>
<td width="10%"> £0.00 </td>
</tr>
</table>
El resultado esperado debería tener este aspecto en un archivo de texto (con columnas alineadas muy bien):
test product 5 £50.00
Project Name: Test Project
Page 1 : 01 New York 1.jpg £0.00
Mi idea es analizar el contenido HTML DOMDocument. Luego estableceré un ancho predeterminado para la tabla (es decir, 100 espacios) y luego convertiré el ancho de cada columna de% a número de espacios (basado en colspan
& width
atributo de <td>
etiqueta). Luego restaré este ancho de columna a strlen
de los datos en cada columna para archivar el número de espacios que necesito para pad_right a la cadena para hacer que todo se alinee verticalmente.
He estado trabajando de esa manera, no se ha archivado lo que quiero, pero me pregunto si es estúpido o si alguien conoce una mejor manera, por favor, ayúdenme.
También en lo que respecta a los idiomas de Multibyte (japonés, coreano, etc.) No creo que mi enfoque funcione porque sus personajes serán más grandes que un espacio y terminará en un desastre.
¿Alguien me puede ayudar, por favor?
Esto solo podría funcionar si el texto se muestra en una fuente monoespaciada. – Roman
¿Eh? Multibyte no (/ should not) toma más espacios en su txtfile. – PeeHaa
¿Qué harás si hay una columna que es más ancha de lo que estás esperando? –