【发布时间】:2012-06-21 15:09:36
【问题描述】:
我正在做一个需要将 html 电子邮件转换为文本的项目。以下是 HTML 代码的简化版本:
<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>
文本文件中的预期结果应如下所示(列对齐良好):
test product 5 £50.00
Project Name: Test Project
Page 1 : 01 New York 1.jpg £0.00
我的想法是通过 DOMDocument 解析 HTML 内容。然后我将为表格设置一个默认宽度(即:100 个空格),然后将每列的宽度从 % 转换为空格数(基于 <td> 标签的colspan 和width 属性)。然后,我将这些列宽减去每列数据的strlen,以归档我需要 pad_right 到字符串的空格数,以使所有内容垂直对齐。
我一直在这样工作,还没有归档我想要的内容,但只是想知道这是否是愚蠢的,或者有人知道更好的方法,请帮助我。
此外,当涉及到多字节语言(日语、韩语等)时,我认为我的方法不会奏效,因为它们的字符会大于一个空格并且最终会变得一团糟。
有人可以帮帮我吗?
【问题讨论】:
-
这只有在文本以等宽字体显示时才有效。
-
嗯?多字节不(/不应该)在您的 txtfile 中占用更多空间。
-
如果有一列比您预期的要宽,您会怎么做?
-
@roman:是的,我也这么认为,但还没有找到更好的解决方案。
-
只需将边框宽度设置为'0'
标签: php html text html-table