Tôi đang làm việc trên một dự án yêu cầu chuyển đổi email html thành văn bản. Dưới đây là một phiên bản đơn giản của các mã HTML:Chuyển đổi bảng HTML thành văn bản
<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>
Kết quả dự kiến sẽ giống như thế này trong một file văn bản (với các cột liên kết độc đáo):
test product 5 £50.00
Project Name: Test Project
Page 1 : 01 New York 1.jpg £0.00
Ý tưởng của tôi là phân tích các nội dung HTML của DOMDocument. Sau đó, tôi sẽ đặt chiều rộng mặc định cho bảng (ví dụ: 100 khoảng trắng) rồi chuyển đổi chiều rộng của mỗi cột từ% thành số không gian (dựa trên colspan
& width
thuộc tính của thẻ <td>
). Sau đó, tôi sẽ trừ các chiều rộng cột này thành strlen
của dữ liệu trong mỗi cột để lưu trữ số lượng khoảng trắng mà tôi cần phải pad_right vào chuỗi để làm cho mọi thứ đều thẳng đứng.
Tôi đã làm việc theo cách đó, chưa được lưu trữ những gì tôi muốn nhưng chỉ tự hỏi nếu nó là ngu ngốc hoặc bất cứ ai biết một cách tốt hơn xin vui lòng giúp tôi ra ngoài.
Ngoài ra khi nói đến các ngôn ngữ đa ngôn ngữ (tiếng Nhật, tiếng Hàn, v.v ...), tôi không nghĩ rằng cách tiếp cận của tôi sẽ hoạt động vì nhân vật của họ sẽ lớn hơn một không gian và kết thúc một mớ hỗn độn.
Ai đó có thể giúp tôi không?
Điều này chỉ có thể hoạt động nếu văn bản được hiển thị bằng phông chữ đơn cách. – Roman
Huh? Multibyte không (/ không nên) chiếm nhiều khoảng trống hơn trong tệp txtfile của bạn. – PeeHaa
Bạn sẽ làm gì nếu có một cột rộng hơn những gì bạn đang mong đợi? –