文本区域在开始时忽略多个换行符


Textarea ignoring multiple line breaks at beginning

我有一个从数据库中填充自己的表单。我已经检查了正在检索的所有数据,并确信它是正确的。

我的一个字段返回的文本开头有两个换行符。当我echo文本时,它会显示这两个换行符,但是,如果我在textarea中回显文本,它会忽略其中一个换行符......

考虑一下:

$data['field'] = "'n'nTest";
// This shows two line breaks in the code
echo $data['field'];
// This shows two line breaks in the code, but only displays one in the textarea
echo '<textarea>'.$data['field'].'</textarea>'

这是因为以下内容是相同的:

<textarea>
    Value Here
</textarea>
<textarea>Value Here</textarea>

如果是这样,我该如何解决这个问题?我应该只向任何以换行符开头的数据添加换行符吗?

我遇到了几乎相同的问题,无法先重现它,但后来我想出了原因:缩小 HTML 后,每个textarea都会显示在一行中。似乎有区别。

<textarea>Value here</textarea>
  • 您应该考虑原始 HTML 和缩小 HTML 之间的区别。

  • 如果您使用的是所见即所得编辑器(例如TinyMCE),请尝试不使用。

如果没有帮助,我会在开头添加一个换行符 - 正如你已经提到的。不幸的是,感觉有点脏。

(我知道这是一个老生常谈,但是在寻找类似问题的解决方案时遇到了这个问题,所以这是我的解决方案)

问题不在于多个换行符。问题出在文本区域开头的换行符,该换行符将被忽略。

因此,在使用数据库中的值填充文本区域之前,我检查开头是否有换行符,如果是,我添加另一个换行符。这样我就有 2 个换行符而不是一个。第一个被忽略,但第二个正在显示。

$text_val = $data['field'];
$pos = strpos($text_val, chr(10));
if ($pos==0) $text_val = chr(10) . $text_val;
echo "<textarea>$text_val</textarea>";