用PHP解析文件;如何检测换行?

时间:2011-02-11 01:42:04

标签: php parsing file newline

我有一个问题,我正在尝试读取这样的文本文件:

Joe
Johnson

Linus
Tourvalds

在php中解析它时,我需要能够检测换行符。我正在尝试正确定义$ newline。我循环遍历$ file变量中的行数组。

while($line = next($file))
    if($line = $newline)
        echo "new line";

问题是我似乎无法匹配换行符。我知道它实际上出现在$ file数组中,因为:

while($line = next($file))
    echo $line;

逐字输出文件,包含换行符和所有内容。我已经尝试过“\ n”,“”,我不知道下一步该尝试什么。一点帮助?

3 个答案:

答案 0 :(得分:1)

$file = file("path/to/file.txt");

// Incase you need to call it multiple times ...
function isNewLine($line) {
    return !strlen(trim($line));
}

foreach ($file as $line) {
    if (isNewLine($line)) {
        echo "new line<br/>";
    }
}

答案 1 :(得分:0)

这样的事情对你有用吗?

while($line = next($file)) {
    if(in_array($line, array("\r", "\n", "\r\n"))) {
        echo "new line";
    }
}

答案 2 :(得分:0)

我认为这个解决方案可以帮助你们。如果您正在解析从Mac或Windows生成的csv,则此方法有效。使用在Mac中创建的多行读取csv会产生问题,即您无法读取循环中的每一行,但所有csv数据都将作为单行读取。

通过以下解决方案解决了这个问题:

//My CSV contains only one column
$fileHandle = fopen("test.csv",'r');
$codesArray    = array();
count = 0;
while (!feof($fileHandle) ) {
$line = fgetcsv($fileHandle);
if($line[0]!="") {
   $data = str_replace("'", "", (nl2br ($line[0])));
   $dataArray = explode('<br />' ,$data );
   foreach($dataArray as $data) {
       $codesArray[] = trim($data);
   }
}
}
echo "<pre>";
print_r($codesArray);