Skip to main content

Format TCPA list file

Route::get('/format', function () {
    $path = \Illuminate\Support\Facades\Storage::path('file.csv');
    $path2 = \Illuminate\Support\Facades\Storage::path('file-formatted.csv');
    $reader = \League\Csv\Reader::createFromPath($path, 'r');
    $writer = \League\Csv\Writer::createFromPath($path2, 'w');

    $reader->setHeaderOffset(0);
    $writer->insertOne($reader->getHeader());

    foreach ($reader as $line => $row) {
        if($row['phone'] === '') {
            continue;
        }

        if($row['name'] !== '') {
            $formatted = preg_replace("/[^A-Za-z ]/", '', $row['name']);

            if(!\Illuminate\Support\Str::contains($formatted, ' ')) {
                $split = preg_split('/(?=[A-Z])/', $formatted);

                foreach ($split as $i => $item) {
                    if($item === '') {
                        unset($split[$i]);
                    } else {
                        $split[$i] = ucfirst($item);
                    }
                }

                $parts = count($split);

                if($parts === 2 || $parts === 3) {
                    $row['name'] = implode(' ', $split);
                }
            }
        }

        $writer->insertOne($row);
    }
});