限制文本区域的保留换行符
Limit preserved linebreaks for textarea
好的,所以我在上传到我的数据库时保留了换行符,并且在网页上显示时可以看到它们,但我遇到了问题。我的网站是一个论坛,我不希望用户的主题在文本之间有过多的换行符...例如:
line 1
<1 blank line>
<2 blank lines>
<3 blank lines>
<4 blank lines>
line 2
<1 blank line>
<2 blank lines>
line 3
这会使我的页面比需要的长很多,只会导致页面不愉快。无论如何我可以让它在文本行之间只能添加 1 个新行,例如
line 1
<1 blank line>
line 2
<1 blank line>
line 3
提前感谢您的帮助!
假设您可以在 "raw data" 进入数据库之前访问它,您可以对连续的换行符进行字符串搜索并替换为一个换行符 - 可能是正则表达式,例如 \n{2,}
会做的工作。
在 PHP 中,它类似于 $result = preg_replace('/\n{2,}/', '\n', $subject);
也许这就是您要查找的内容(我假设您论坛上的帖子采用 HTML 格式,但如果您在 HTML 格式 - 见 ):
How to Regex-replace multiple <br /> tags with one <br /> tag?
我们可以使用多种方法来做到这一点:
使用正则表达式:
$str = preg_replace('/^[ \t]*[\r\n]+/m', '', $content);
echo (nl2br($str));
自定义函数:
echo removeBlankLines($content);
function removeBlankLines($content = null)
{
$lines = explode("\n", $content);
$temp = array();
foreach ($lines as $line) {
$last = end($temp);
if($line == '' && $last == $line) continue;
$temp[] = $line;
$result[] = $line ? $line : "\n";
}
return ($result) ? (nl2br(join('', $result))) : false;
}
输入:
$content = 'line 1
line 2
line 3';
输出:
line 1
line 2
line 3
好的,所以我在上传到我的数据库时保留了换行符,并且在网页上显示时可以看到它们,但我遇到了问题。我的网站是一个论坛,我不希望用户的主题在文本之间有过多的换行符...例如:
line 1
<1 blank line>
<2 blank lines>
<3 blank lines>
<4 blank lines>
line 2
<1 blank line>
<2 blank lines>
line 3
这会使我的页面比需要的长很多,只会导致页面不愉快。无论如何我可以让它在文本行之间只能添加 1 个新行,例如
line 1
<1 blank line>
line 2
<1 blank line>
line 3
提前感谢您的帮助!
假设您可以在 "raw data" 进入数据库之前访问它,您可以对连续的换行符进行字符串搜索并替换为一个换行符 - 可能是正则表达式,例如 \n{2,}
会做的工作。
在 PHP 中,它类似于 $result = preg_replace('/\n{2,}/', '\n', $subject);
也许这就是您要查找的内容(我假设您论坛上的帖子采用 HTML 格式,但如果您在 HTML 格式 - 见
How to Regex-replace multiple <br /> tags with one <br /> tag?
我们可以使用多种方法来做到这一点:
使用正则表达式:
$str = preg_replace('/^[ \t]*[\r\n]+/m', '', $content);
echo (nl2br($str));
自定义函数:
echo removeBlankLines($content);
function removeBlankLines($content = null)
{
$lines = explode("\n", $content);
$temp = array();
foreach ($lines as $line) {
$last = end($temp);
if($line == '' && $last == $line) continue;
$temp[] = $line;
$result[] = $line ? $line : "\n";
}
return ($result) ? (nl2br(join('', $result))) : false;
}
输入:
$content = 'line 1
line 2
line 3';
输出:
line 1
line 2
line 3