替换php中的空行

问题描述 投票:0回答:7

如何从字符串中删除多个空行。 我已经查看了 stackoverflow 上的示例,并尝试相应地更改我的代码,但我没有得到正确的答案。

function removeMultipleBlankLines(&$array)
{
  $value = $array;
  $value = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $value);

  return $value;
}

  $textarray=array("The red","big","  ","  ","fox","is ready","","","to jump.");

  echo print_r(removeMultipleBlankLines($textarray));
php
7个回答
5
投票

你可以这样做:

$array_with_nonblank_lines = array_filter($textarray, 'trim');

得到你想要的。

这里是php关于

trim
函数的文档页面的链接,它可以完成这项工作。


2
投票

为什么不

$string = trim($string);

您甚至可以使用第二个可选参数指定要修剪的内容,即

trim ( string $str [, string $charlist ] )
请参阅文档http://php.net/manual/en/function.trim.php


2
投票

还对其进行修剪:

   function removeMultipleBlankLines(&$array) {
      return trim(preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $array));
    }

1
投票

使用正则表达式是可行的,但一些不熟悉正则表达式的人可能会对如何布局表达式感到困惑。在我看来,使用熟悉的修剪命令只是一个更好的选择,但最终我认为修剪会更快,因为它不需要评估正则表达式等。


1
投票

试试这个:

$str =preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\r\n", $str);

输出文件将在简单记事本和文本编辑器(例如 Notepad++)上提供相同的输出。


0
投票

foreach
循环中循环浏览各行,并使用
trim()
处理空白删除。此示例还从文件加载文本:

$lines_trim = [];
$lines = file($f, FILE_SKIP_EMPTY_LINES);
foreach($lines as $line) {
    if (trim($line)) {
        $lines_trim[] = $line;
    }
}
file_put_contents($f, $lines_trim);

(注意:我发现

FILE_SKIP_EMPTY_LINES
标志不可靠,因此需要手动删除空行。)

PHP trim() 默认将以下字符视为“空格”:

" " (ASCII 32 (0x20)), an ordinary space.
"\t" (ASCII 9 (0x09)), a tab.
"\n" (ASCII 10 (0x0A)), a new line (line feed).
"\r" (ASCII 13 (0x0D)), a carriage return.
"\0" (ASCII 0 (0x00)), the NUL-byte.
"\v" (ASCII 11 (0x0B)), a vertical tab.

-2
投票

试试这个:

$string = str_replace("\r\n",'',$string);
© www.soinside.com 2019 - 2024. All rights reserved.