Login
网站首页 > 文章中心 > php

PHP逐行读取过滤空行最有效的方法对比

作者:小编 更新时间:2024-03-09 08:58:06 浏览量:186人看过

$yuminglist = file($neilianurl);

foreach ($yuminglist as $line) {

    // 在这里对每一行执行操作

}

这段代码是逐行读取的常规操作, 但是呢 他不会过滤空行需要用一些判断来实现 很麻烦

$yuminglist = file($qiangyinfile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach ($yuminglist as $line) {

    // 在这里对每一行执行操作

}

这个方法读取 会更好一些  file($qiangyinfile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);:这个函数调用会从指定的文件中读取内容,并将每一行作为数组中的一个元素存储。FILE_IGNORE_NEW_LINES 参数表示去除每行末尾的换行符,而 FILE_SKIP_EMPTY_LINES 参数表示跳过空行,不将它们包含在返回的数组中。


上面这个方法虽然完善 但是 !!! 在不同操作系统上,换行符的表示方式可能会有所不同。在Windows系统中,换行通常表示为\r\n(Carriage Return + Line Feed),而在Linux系统中,通常表示为\n(Line Feed)。因此,在不同系统下读取文件时可能会出现问题。


对于这种情况,你可以使用PHP的preg_split()函数结合正则表达式来处理换行符。指定PREG_SPLIT_NO_EMPTY标志将确保在分割时不包含空字符串。通过这种方式,无论在哪个系统下,都可以正确地过滤掉空行并且处理换行符。


$content = file_get_contents($neilianurl);
$lines = preg_split('/\r\n|\r|\n/', $content, -1, PREG_SPLIT_NO_EMPTY);
foreach ($lines as $line) {
    // 在这里处理每一行内容
}


在这段代码中,preg_split() 函数用于将字符串按照给定的正则表达式模式进行分割,并返回一个数组。让我们解释一下代码中的各部分含义:


/:正则表达式的开始和结束定界符。

\r\n|\r|\n:这是正则表达式模式,表示匹配回车换行符\r\n、单独的回车符\r或者单独的换行符\n。

$content:要分割的原始字符串。

-1:在 limit 参数中指定为 -1,表示不限制分割的次数。

PREG_SPLIT_NO_EMPTY:这个标志告诉 preg_split() 函数在分割结果中不包含空字符串。

因此,这行代码的作用是将字符串 $content 按照回车换行符 \r\n、回车符 \r 或换行符 \n 进行分割,并且过滤掉空的分割项,并将结果存储到 $lines 数组中。这样就可以有效地处理不同操作系统下的换行符并过滤空行。

通过这种方法,你可以更可靠地处理不同系统下的换行符问题,并过滤掉空行。


这取决于你的需求和代码的具体情况。让我来比较一下这两种方法:


file($qiangyinfile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);:


优点:

方便快捷,一行代码即可实现文件内容按行存储到数组并忽略空行。

缺点:

在处理不同操作系统下的换行符时可能会出现问题,特别是如果混合了不同操作系统生成的文件。

使用 preg_split('/\r\n|\r|\n/', $content, -1, PREG_SPLIT_NO_EMPTY);:


优点:

可以更准确地处理不同操作系统下的换行符,确保分割结果正确且不包含空行。

缺点:

需要使用正则表达式,稍微复杂一些。

如果你确定文件的换行符在不同系统间是一致的,可以选择第一种方法。但是,如果需要更加健壮地处理换行符,并且确保过滤掉空行,那么使用 preg_split() 函数与正则表达式会是一个更好的选择。


版权声明:倡导尊重与保护知识产权,本站有部分资源、图片来源于网络,如有侵权,请联系我们修改或者删除处理。
转载请说明来源于"土嘎嘎" 本文地址:http://www.tugaga.com/jishu/php/1870.html
<<上一篇 2024-03-08
下一篇 >> 2024-03-09

编辑推荐

热门文章