首页 > 解决方案 > 即使在修剪后,CSV 联盟也会在字符串的开头显示一些空格

问题描述

我正在使用https://csv.thephpleague.com/读取 csv 的代码是:

if (!ini_get("auto_detect_line_endings")) {
    ini_set("auto_detect_line_endings", TRUE);
}

$csv = Reader::createFromPath($path, 'r');
$input_bom = $csv->getInputBOM();
if ($input_bom === Reader::BOM_UTF16_LE || $input_bom === Reader::BOM_UTF16_BE) {
    $csv->addStreamFilter('convert.iconv.UTF-16/UTF-8');
}
$csv->skipEmptyRecords();
$csv->setHeaderOffset($header_row);
$csv_header = $csv->getHeader();

/**unit_number **/
$unit_number_key = array_search('unit_number', $request->row);
$unit_number_results = $csv->fetchColumn($unit_number_key);
$unit_number_lists = iterator_to_array($unit_number_results, false);
if($header_row > 0){
    $unit_number_lists = array_slice($unit_number_lists,$header_row);
}
$unitNumbers = array();
$unit_numbers = array_filter(array_unique($unit_number_lists));

foreach($unit_numbers as $uk => $uv){
    $r_trimmed_uv = trim($uv);
    $str_len = strlen($r_trimmed_uv);
    if(!isset($unitNumbers[$str_len])){
        $unitNumbers[$str_len] = $r_trimmed_uv;
    }
dd($unitNumbers);

结果dd显示为:

在此处输入图像描述

在这里,我们可以确认有 10 个字符(6 个空格)和(4 个数字)。我该如何解决它,我不知道它是否以不同的格式编码,这就是问题所在,或者我是否缺少按照 CSV 添加一些行。但是,我无法从这里删除这个空间。

而且,这里是示例文件:https ://drive.google.com/file/d/1i3ry8AoGzfNG-K6AWpWvhzSQ8QkreOB0/view?usp=sharing

标签: phpcsvlaravel-5thephpleague

解决方案


推荐阅读