从textarea的输出中删除空行

时间:2010-11-18 12:23:50

标签: php regex trim

我从textarea获取数据,用户必须在每行输入一个名称。该数据后来在回车时被拆分。有时用户可能会故意添加空行。如何检测这些行并删除它们?我正在使用PHP。我不介意使用正则表达式或其他任何东西。

数据不正确

Matthew
Mark
Luke

John

James

更正数据(请注意删除空行)

Matthew
Mark
Luke
John
James

3 个答案:

答案 0 :(得分:9)

使用正则表达式消除爆炸前的空白行(适用于任意数量的连续空白行,也请参阅下一个代码段):

$text = preg_replace('/\n+/', "\n", trim($_POST['textarea']));

使用正则表达式进行拆分:

$lines = preg_split('/\n+/', trim($_POST['textarea']));
$text = implode("\n", $lines);

没有正则表达式的分裂:

$lines = array_filter(explode("\n", trim($_POST['textarea'])));
$text = implode("\n", $lines);

今天感觉有点创意,选择你的毒药:)

答案 1 :(得分:0)

我认为,简单的字符串替换应该可以解决问题。

str_replace("\r\n\r\n", "\r\n", $text);

答案 2 :(得分:0)

分割输入后,循环搜索空行的数组:

$lines = explode("\n", $_POST['your_textarea']);
foreach ($lines as $k=>$v) if(empty($v)) unset($lines[$k]);

你甚至可以查找只包含空格的行来删除它们:

$lines = explode("\n", $_POST['your_textarea']);
foreach ($lines as $k=>$v) if(empty(trim($v))) unset($lines[$k]);

(两个代码段均未经测试)

注意:按换行符拆分时要小心(我将它们拆分为\ n,但如果客户端浏览器在Windows上运行,则可以是\ r \ n。)