php – 如何解析包含数据中的换行符的Excel数据?

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 如何解析包含数据中的换行符的Excel数据?脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 PHP解析一组CSV数据,但存在一个主要问题.其中一个字段是长描述字段,其本身包含机箱内的换行符.

我的主要问题是编写一段可以逐行拆分数据的代码,但也可以识别不应该使用数据中的换行符.此字段中的换行符未正确转义,因此很难与合法的换行符区分开来.

我试图想出一个能够正确处理它的正则表达式,但到目前为止还没有运气.有任何想法吗?

CSV格式:

"####","text data here","text data \n wITh linebreaks \n here"\n
"####","more text data","more data \n with \n linebreaks \n here"\n
根据PHP fgetcsv功能文档中的评论者aleske的说法:

他提供了以下功能解决这个限制:

function csvstring_to_array(&$string,$CSV_SEPARATOR = ';',$CSV_ENCLOSURE = '"',$CSV_LINEBREAK = "\n") { 
  $o = array(); 

  $cnt = strlen($string); 
  $esc = false; 
  $escesc = false; 
  $num = 0; 
  $i = 0; 
  while ($i < $cnt) { 
$s = $string[$i]; 

if ($s == $CSV_LINEBREAK) { 
  if ($esc) { 
    $o[$num] .= $s; 
  } else { 
    $i++; 
    break; 
  } 
} elseif ($s == $CSV_SEPARATOR) { 
  if ($esc) { 
    $o[$num] .= $s; 
  } else { 
    $num++; 
    $esc = false; 
    $escesc = false; 
  } 
} elseif ($s == $CSV_ENCLOSURE) { 
  if ($escesc) { 
    $o[$num] .= $CSV_ENCLOSURE; 
    $escesc = false; 
  } 

  if ($esc) { 
    $esc = false; 
    $escesc = true; 
  } else { 
    $esc = true; 
    $escesc = false; 
  } 
} else { 
  if ($escesc) { 
    $o[$num] .= $CSV_ENCLOSURE; 
    $escesc = false; 
  } 

  $o[$num] .= $s; 
} 

$i++; 
  } 

//  $string = substr($string,$i); 

  return $o; 
}

看起来它会成功.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 如何解析包含数据中的换行符的Excel数据?全部内容,希望文章能够帮你解决php – 如何解析包含数据中的换行符的Excel数据?所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。