我可以使用<br/>或类似的来避免RowSpan吗?

时间:2011-05-01 06:19:26

标签: php html css

我使用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 | 
-------------------------------------------------------

4 个答案:

答案 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标记。

希望这有帮助。