我需要在不同类型的浏览器、邮件客户端和显示/设备类型(桌面、移动设备等)上将文本文件显示为 HTML 内容。
在小型显示器上,文本行应在屏幕末尾中断,但表格应保持布局。
无法更改文本文件本身,但可以在生成 HTML 文档之前使用 php 转换文本文件。
问题是:文本文件有一种使用空格的布局,例如显示表格,如下所示:
This is a part of a textfile, where the
next line starts with 3 spaces, for example <- as you can see
In some cases there are important spaces insight the text.
sometimes, there are also tables part of the textfiles, build with
spaces, like this:
Row1 Row2 Row3
Data 1 2
Data ax 547
如果你简单地把这个文本洞察一个<div>
或<span>
元素:布局会丢失,因为 HTML 将多个空格显示为一个。
比我尝试使用<pre>
标签来保持布局。问题是:在小显示器上,您必须从左到右滚动才能阅读长行,这与可用性相比是次优的。
接下来我尝试将所有空间更改为受保护的空间:
,使用preg_replace
. 这样既保留了表格布局,也保留了文本布局,因为现在每个单词之间的每个空格都受到保护。
最后,我尝试使用这些命令仅转换具有相同数量的受保护 HTML 空格的多个空格,而不是单个空格:
//replace odd number of spaces
$s_text = preg_replace('/ /',' ',$s_text);
//replace even number of spaces
$s_text = preg_replace('/ /',' ',$s_text);
所以文本是“浮动的”/响应式的,一些表格保持结构。但是一些表格布局仍然被破坏。
所以我的问题是:您将如何“转换”文本以使长文本行在屏幕末端中断并且表格保持布局?