提问人:Réal Thibeault 提问时间:10/21/2022 最后编辑:Réal Thibeault 更新时间:10/22/2022 访问量:102
从 PHP 8.0 到 8.1 中,fgetcsv 通过 SplFileObject 的行为并不相同 - 如何保持向后兼容?
Behavior of fgetcsv through SplFileObject is not the same from PHP 8.0 to 8.1 - how to stay backwards compatible?
问:
我的代码中有类似的东西,几年来运行良好:
$spl_file = new SplFileObject($file_path, 'r', false, null);
$spl_file->setFlags(SplFileObject::READ_CSV | SplFileObject::READ_AHEAD);
$result = $spl_file->fgetcsv();
我在 PHP 8.0 和 PHP 8.1 之间做了不同的测试。如果我们的文件(例如 $file_path)中有一行,例如 或 ,则在 PHP 8.0 和 PHP 8.1 的所有情况下结果都是相同的,例如包含 和 的数组。这是预期行为。"Value1","Val"
Value1,Val
Value1
Val
但是,如果我们有一个损坏的 csv 文件,它在两个 PHP 版本中的作用并不相同。我发现不同的案例有不同的行为。例如,对于 和 。PHP 8.0 在每种情况下都会返回一个空数组,但 PHP 8.1 将返回前 2 种情况 和 ,以及最后一种情况。"Value1,Val
"Value1","Val
Value1","Val
Value1
Val
Value1"
Val
这是一个很大的改进,但是此更新可能会对某些现有案例产生重要影响。有没有办法在更新到 8.1 时保持 fgetcsv 的相同行为?
答: 暂无答案
评论