【问题标题】:How to repair a text file with line breaks in the middle of some lines?如何修复某些行中间有换行符的文本文件?
【发布时间】:2017-08-04 06:56:13
【问题描述】:

我有一个文本文件,问题是有些行分为两行。示例:

Line 1 : value[1] , value[2] , value[3] , value[4] , value[5] 

Line 2 : value[1] , value[2] , 
Line 3 : value[3 *] , value[4 *] , value[5 *] 

Line 4 : value[1] , value[2] , value[3] , value[4] , value[5] 
Line 5 : value[1] , value[2] , value[3] , value[4] , value[5]

现在,我该如何排列这些行,因为我需要通过 PHP 将数据插入到我的数据库中:

Line 1 : value[1] , value[2] , value[3] , value[4] , value[5] 

Line 2 : value[1] , value[2] , value[3] , value[4] , value[5] 


Line 3 : value[1] , value[2] , value[3] , value[4] , value[5] 
Line 4 : value[1] , value[2] , value[3] , value[4] , value[5]

【问题讨论】:

  • 你想怎么排列它们?
  • @Andreas 谢谢你
  • > 第 2 行 : value1 , value2 , value3 , value4 , value5
  • 那么你的意思是,第二行的字符串中间有一个不需要的新行,使它跨越两行?
  • @Andreas:见the edit I've made in rev #5。我正在和 OP 交谈——也许我可以说得更清楚。

标签: php csv text


【解决方案1】:

我将字符串分解为一个数组并循环遍历该数组。如果没有 4 个逗号,它将合并两行并取消设置“上一个”。

$str = "value1 , value2 , value3 , value4 , value5
value1 , value2 ,
value3 , value4 , value5
value1 , value2 , value3 , value4 , value5
value1 , value2 , value3 , value4 , value5";

$arr= explode(PHP_EOL, $str);

for($i=0; $i<count($arr); $i++){
    if(substr_count($arr[$i], ",") != 4){
       $arr[$i+1] = $arr[$i] . " " . $arr[$i+1];
       unset($arr[$i]);
    }
}
echo implode(PHP_EOL, $arr);

https://3v4l.org/EBQEX

【讨论】:

  • 不知道该文件是否为CSV文件?如果是这样,OP 可能希望考虑 "one, two" 的条目(即带引号)是否构成一个或两个条目。 PHP CSV line reader 可以应付。
  • @halfer 如果是这种情况,那么问题写得不好。 OP 没有回复我的回答,甚至没有回复我关于我的回答的问题。如果他/她(
  • 我不会担心追逐提问者的答案 - 有些人不经常登录,有些人根本不会重新登录。这是在线社区的本质。如果 OP 继续提出新问题并忽略旧答案,我有时会否决一个问题,但否则你无能为力。同时为你的努力投票(尽管我建议你坚持 PHP 关键字的小写作为公认的标准)。
  • 谢谢,但那是因为我在手机上输入了大部分答案。它会自动将每个句子或行的第一个单词大写。我可以强制使用非大写字母,但它的工作量很大,因为它在大多数情况下仍然有效。
  • 我也注意到了你对提问者的评价。
猜你喜欢
  • 2011-10-08
  • 2011-09-26
  • 2019-10-18
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
  • 2016-12-23
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多