我使用PHP生成报告,基本上是一个单行表。
但是,如果任何字段反映了备忘录,那么我希望看到多行备忘录文本 - 包含某些孩子的换行符 - 而不仅仅是整个备忘录文本作为一个长字符串。
我正在使用PHP来生成HHTML。我确实尝试用'\r\n'
替换所有<br>
,但这不起作用。
要做到'正确'会变得混乱。我需要检查表格中的所有字段并查找包含最多换行符的备注字段,然后使用行数向表格中的每个rowspan
添加<td>
。
有没有简单的方法可以避免这种情况?
不良ascii艺术澄清如下。我目前有
-----------------------------------------------------------------------------------
| edit box text | radio group selection | memo line 1 memo line 2 ... memo line x |
-----------------------------------------------------------------------------------
我想要的是:
------------------------------------------------------
| edit box text | radio group selection | memo line 1 |
| | | memo line 2 |
| | | ... |
| | | memo line x |
-------------------------------------------------------
答案 0 :(得分:2)
这样做怎么样:
<table>
<tr>
<td>edit box text</td>
<td>radio group selectio</td>
<td>
<div>
memo line 1
</div>
<div>
memo line 2
</div>
<div>
memo line 3
</div>
</td>
</tr>
</table>
将表格与div组合在一起,你保留了你的表格并强制“备忘录”采用了新的一行,并使用这种形式,你可以给备忘录一个不同的风格。
答案 1 :(得分:1)
也许这简化了它,但为什么不用备忘录为表格单元分配固定宽度?我忘了如果<td>
s在宽度设置下可以表现得很有趣,但是如果是这样的话,只需将它包装在一个固定宽度的div中。
OR与php ...
wordwrap() — Wraps a string to a given number of characters
如果已经格式化,则使用CSS或<pre>
标记:
td.has_memo {
white-space:pre;
}
或者再次使用php,如果它已预格式化:
nl2br() — Inserts HTML line breaks before all newlines in a string
答案 2 :(得分:0)
也许这可能有效
<td valign="top">
答案 3 :(得分:0)
只需清除需要显示备注字段的单元格上的格式(如果有)。
然后打印出这样的内容:
echo nl2br($Fields["MemoField"]);
上述功能会自动将所有\ n行转换为br标记。
希望这有帮助。