我有一个从数据库填充自己的表单。我检查了所有正在检索的数据,并确信它是正确的。
我的某个字段会在其开头返回带有两个换行符的文本。当我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>
如果是这样,我该如何解决这个问题呢?我是否应该为以换行符开头的任何数据添加换行符?
答案 0 :(得分:0)
我遇到了几乎相同的问题并且无法首先重现它,但后来我发现了原因:在缩小HTML之后,每个textarea
将显示在一行中。似乎有所不同。
<textarea>Value here</textarea>
您应该考虑原始HTML和缩小HTML之间的区别。
如果您使用的是WYSIWYG-Editor(例如TinyMCE),请不要尝试。
如果没有任何帮助,我会在开头添加一个换行符 - 正如您已经提到的那样。不幸的是,感觉有点脏。
答案 1 :(得分:0)
(我知道这是个老歌,但是在寻找类似问题的解决方案时遇到了这个问题,所以这是我的解决方案)
问题不是多个换行符。问题在于文本区域开头的换行符被忽略。
因此,在使用数据库中的值填充textarea之前,我检查开头是否有换行符,如果是,请添加-。 这样,我有2个换行符,而不是1个。第一个被忽略,但是第二个正在显示。
$text_val = $data['field'];
$pos = strpos($text_val, chr(10));
if ($pos==0) $text_val = chr(10) . $text_val;
echo "<textarea>$text_val</textarea>";