如何从字符串中删除多个空行。 我已经查看了 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));
为什么不
$string = trim($string);
?
您甚至可以使用第二个可选参数指定要修剪的内容,即
trim ( string $str [, string $charlist ] )
请参阅文档http://php.net/manual/en/function.trim.php
还对其进行修剪:
function removeMultipleBlankLines(&$array) {
return trim(preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $array));
}
使用正则表达式是可行的,但一些不熟悉正则表达式的人可能会对如何布局表达式感到困惑。在我看来,使用熟悉的修剪命令只是一个更好的选择,但最终我认为修剪会更快,因为它不需要评估正则表达式等。
试试这个:
$str =preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\r\n", $str);
输出文件将在简单记事本和文本编辑器(例如 Notepad++)上提供相同的输出。
在
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.
试试这个:
$string = str_replace("\r\n",'',$string);