我有这个代码用于保存输入到数据库的文本区域中的换行符:
$input = preg_replace("/(\n)+/m", '\n', $input);
在检查数据库中的输入时,实际上会保存换行符
但问题是,当我想要回显它时,不会出现换行符
在输出中,如何保留输入中的换行符并回显它们
出。我不想使用<pre></pre>
。
答案 0 :(得分:4)
您正在使用文字两个字符序列$input
(反斜杠+ n)替换\n
中实际的换行序列 - 而不是换行符。从数据库读取时,需要将这些转换回换行符。虽然我怀疑你打算在数据库中保留这些实际换行符,但应该使用双引号字符串......
$input = preg_replace('/(\n)+/m', "\n", $input);
请注意,我已使用单引号替换第一个字符串分隔符,并使用双引号替换第二个字符串。 \n
是正则表达式中的一个特殊序列,用于表示换行符(ASCII 10),但它也是PHP中的一个字符转义符,表示相同 - 两者有时会发生冲突。
答案 1 :(得分:1)
我认为PHP有解决方案:
中的所有换行符之前插入HTML换行符
nl2br
- 在字符串
修改:您可能需要更换CR / LF以使其正常工作。
// Convert line endings to Unix style (NL)
$input = str_replace(array("\r\n", "\r"), "\n", $input);
// Remove multiple lines
$input = preg_replace("/(\n)+/m", '\n', $input);
// Print formatted text
echo nl2br($input);