gpt4 book ai didi

php - 从 CSV 数据字符串中删除换行符(PHP 5.3 之前)

转载 作者:可可西里 更新时间:2023-10-31 23:40:42 25 4
gpt4 key购买 nike

我有一个包含 CSV 文件内容的大字符串。到目前为止,我并不关心解析它,因为我的程序只是将它从一个源流式传输到另一个源。

如果你决定接受它,你的任务是告诉我从包含多个 CSV 数据行的字符串的数据元素中删除换行符的最佳方法,而不丢弃分隔行本身的换行符。数据被正确引用,实现必须在 PHP 5.2 上运行...

id,data,other
1,"This is data
with a line break I want replacing",1
2,"This is a line with no line break in the data",0
3,No quotes,42
4,"Quoted field with ""quotes inside"" which is tricky",84

最佳答案

我认为,如果 CSV 数据中有换行符,则该行上必须有奇数(不成对)的引号。如果有这样一行,去掉它的换行符,检查新创建的行是否有效。下面的伪 PHP 代码应该可以工作。 ReadercontainsOddNumberOfQuotes() 行在 PHP 5.2 中很容易实现:

function fixCsv($fileOrString) {
$reader = new Reader($fileOrString);
$correctCsv = "";
while ($reader->hasMoreLines()) {
$correctCsv = $correctCsv . fixLine($reader, $reader->readLine()) . "\n";
}
return $correctCsv;
}

/** Recursive function that returns a valid CSV line. */
function fixLine($reader, $line) {
if (containsOddNumberOfQuotes($line)) {
if ($reader->hasMoreLines()) {
// Try to make a valid CSV line by joining this line with the next one.
return fixLine($reader, line . $reader->readLine())
}
throw new Exception("Last line is incomplete.");
}
else {
return $line;
}
}

关于php - 从 CSV 数据字符串中删除换行符(PHP 5.3 之前),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22783899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com