我有一个问题,我正在尝试读取这样的文本文件:
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”,“”,我不知道下一步该尝试什么。一点帮助?
答案 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);