Когда импортировать данные CSV через php получить "?" - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь импортировать этот CSV: введите описание изображения здесь

Я получаю следующий массив:

CSV Object
(
    [columns] => Array
        (
            [0] => numero
            [1] => nombre_pila
            [2] => apellido_1
            [3] => apellido_2
            [4] => direccion
            [5] => localidad
            [6] => codigo_postal
            [7] => provincia
            [8] => nif_pasaport
            [9] => telefono_1
            [10] => movil
            [11] => email
            [12] => fecha_nacimiento
            [13] => codigo_country
            [14] => pais
        )

    [rows] => Array
        (
            [0] => Array
                (
                    [numero] => 1
                    [nombre_pila] => To?o d'angelo
                    [apellido_1] => Iba?ez C?rdenas
                    [apellido_2] => Fuentes
                    [direccion] => C/ Playa de la Jara, n? 200 La carlota
                    [localidad] => La Algaba
                    [codigo_postal] => 8396
                    [provincia] => La Coru?a
                    [nif_pasaport] => 28.612.567-S
                    [telefono_1] => 987654123
                    [movil] => 690864186
                    [email] => jorge43722@gmail.com
                    [fecha_nacimiento] => 4/3/72
                    [codigo_country] => 196
                    [pais] => Espa?a
                )

        )

    [delimiter] => ,
    [closing] => "
)

Как вы увидите, символ " ?» и должно получиться:

[nombre_pila] => Toño d'angelo
[apellido_1] = > Ibañez Cárdenas
[direccion] => C/ Playa de la Jara, nº 200 La carlota
[provincia] => La Coruña
[pais] => España

Я использую следующее:

<code>Route::get('clients', function(){

    header('Content-Type: text/html; charset=UTF-8');

    $path_to_file = path('public') . '/files/clientes.csv';

    $csv = CSV::from_file($path_to_file, ';');

    echo "<pre>".print_r($csv,true).'
'; });

Где метод from_file выглядит следующим образом:

public static function from_file($path, $delimiter = ',', $enclosure = '"')
    {
        // fix mac csv issue
        ini_set("auto_detect_line_endings", true);

        // open file...
        if ($input = @fopen($path, 'r'))
        {
            $columns = array();
            $rows = array();

            // spin rows...
            $row = 1;
            while ($fields = fgetcsv($input, 0, $delimiter, $enclosure))
            {
                // if first row...
                if ($row === 1)
                {
                    // spin headers...
                    $count = 0;
                    foreach ($fields as $field)
                    {
                        // get column name
                        $name = $field;

                        // check exists...
                        if (in_array($name, $columns))
                        {
                            $count++;
                            $name .= '_'.$count;
                        }

                        // save column name
                        $columns[] = $name;
                    }
                }

                // if NOT first row...
                else
                {
                    // combine
                    $temp = array_combine($columns, $fields);

                    // if no error...
                    if ($temp)
                    {
                        // add to rows
                        $rows[] = $temp;
                    }
                    else
                    {
                        // do not add row
                        #die(var_dump($fields));
                    }
                }
                $row++;
            }

            // close file
            fclose($input);

            // build object
            $class = __CLASS__;
            $object = new $class;
            $object->columns = $columns;
            $object->rows = $rows;
            return $object;
        }
        else
        {
            return false;
        }
    }

Я сделал все, но я не понимаю, надеюсь, вы можете помочь мне, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...