Php 如何在读取文件时删除跳过空行
阅读官方文件,如果我想跳过txt中的空行,我只需要用file_skip_empty_line调用函数file();事实上,我写道:Php 如何在读取文件时删除跳过空行,php,file,Php,File,阅读官方文件,如果我想跳过txt中的空行,我只需要用file_skip_empty_line调用函数file();事实上,我写道: $fileArray=file($uploadDirectory.$tracklistFile_name, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 但它也读空行。因此,在这样的文本中: // START OF THE DOCUMENT aaa bbb ccc ddd // END OF THE DOCUM
$fileArray=file($uploadDirectory.$tracklistFile_name, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
但它也读空行。因此,在这样的文本中:
// START OF THE DOCUMENT
aaa
bbb
ccc
ddd
// END OF THE DOCUMENT
实际上,
sizeof($fileArray)
是6:它在bbb
和ccc
之间添加了空行,最后一行。为什么?文件跳过空行
实际上只跳过空行。如果在其中有空格或制表符或其他空白,则不认为它是空行。
在检查之前,它不会进行修剪
,它会查看$line==“\n”
,然后才将其视为空行
作为替代方案,您可以使用:
$file = array_filter(array_map("trim", file("text.txt")), "strlen");
有很多方法可以清理阵列,但我喜欢这一种:
$fileArray = array_values(array_filter($fileArray, "trim"));
嗯。那么如何删除空白呢<代码>$fileArray=array_filter($fileArray,“trim”)代码>?差不多了。请参见编辑。但这将返回所有被修剪的线条,不仅仅是为了测试。嗯,它不起作用!如果我尝试使用for查看结果,当我删除该值时,我会得到一个通知:未定义的偏移量:使用
print\r
查看结果,而不是for
循环。是的,这类似于trim,但事实上,当我浏览数组时,我会得到一个通知:在空行之前的位置未定义…使用foreach()对数组进行迭代
而不是for()
循环,您应该没事了。(增加了额外的一行,它应该允许一个来让正常工作是的,我错过了array\u values函数!很好!谢谢。为什么你在trim时预定位为空?empty()
将根据字符串(行)是否为空返回真/假。trim()
将只返回一个经过修剪的字符串,因此对于“它将返回”我们还有一条空线