Escritura y lectura de archivos PHP CSV

1. ¿Qué es csv?

Valores separados por comas (CSV), su archivo almacena datos tabulares (números y texto) en texto plano, y cada línea del archivo es un registro de datos. Cada registro consta de uno o más campos, separados por comas.

Se puede abrir usando WPS, el efecto es el mismo que en Excel. Debido a que es solo un formato acordado, el análisis no será tan problemático y consumirá memoria como Excel.

Por lo general, uso el archivo csv como exportación del contenido de la base de datos, luego lo abro en WPS y lo guardo como Excel para el demandante, porque escribir y leer Excel será más problemático.

2. Escribe un archivo csv

  1. Envoltura de ,segmentación de contenido general \r\n.

    <?php
    
    $data = [
        ['id' => 1, 'name' => '哪吒', 'description' => "魔丸降生,陈塘关三太子"],
        ['id' => 2, 'name' => '敖丙', 'description' => "龙族的希望"],
        ['id' => 3, 'name' => '李靖', 'description' => "哪吒是我儿"],
    ];
    
    $file = fopen('/tmp/test.csv', 'w');
    
    foreach($data as $datum) {
          
          
    	// 判断
        fwrite($file, implode(',', $datum) . "\r\n");
    }
    
    fclose($file);
    

    Apertura de archivos y apertura de WPS
    Inserte la descripción de la imagen aquí

  2. Cualquier salto de línea y \ncomas en inglés en el contenido ,interferirá con el análisis de csv, como convertir una matriz en

    $data = [
        ['id' => 1, 'name' => '哪吒', 'description' => "魔丸降生,陈塘关三太子"],
        ['id' => 2, 'name' => '敖丙', 'description' => "龙族的\n希望"],
        ['id' => 3, 'name' => '李靖', 'description' => "哪吒是我儿"],
    ];
    

    Inserte la descripción de la imagen aquí
    Solución: use el campo que rodea a los caracteres , el valor predeterminado es comillas dobles

    <?php
    
    $data = [
        ['id' => 1, 'name' => '哪吒', 'description' => "魔丸降生,陈塘关三太子"],
        ['id' => 2, 'name' => '敖丙', 'description' => "龙族的\n希望"],
        ['id' => 3, 'name' => '李靖', 'description' => "哪吒是我儿"],
    ];
    
    $file = fopen('/tmp/test.csv', 'w');
    
    foreach($data as $datum) {
          
          
        fwrite($file, '"' . implode('","', $datum) . '"' . "\r\n");
    }
    
    fclose($file);
    

    Apertura de archivos y apertura de WPS
    Inserte la descripción de la imagen aquí

  3. Hay comillas dobles en el contenido. "
    Uh, no pensé en una buena manera por el momento. Reemplaza str_replace con comillas dobles en chino.

3. Leer csv

  1. Existe una función especial en PHP para fgetcsv()analizar la fila del puntero actual en una matriz.

    <?php
    
    $file = fopen('/tmp/test.csv', 'r');
    
    while($row = fgetcsv($file)) {
          
          
    
    	var_dump($row);
    }
    

    Cuando el puntero llegue al final del archivo, regrese y falsesalga.

  2. Pero debe tenerse en cuenta que si hay una línea en blanco en el medio o al final del archivo, se $rowanalizará como una nullmatriz que contiene un elemento [null].

    volver a escribir

    <?php
    
    $file = fopen('/tmp/test.csv', 'r');
    
    while($row = fgetcsv($file)) {
          
          
    	if ($row[0] === null) continue; 
    	
    	var_dump($row);
    }
    
    fclose($file);
    
  3. Hace un momento dijimos que la presencia de comas en inglés en el contenido ,afectará el análisis, o el uso de caracteres envolventes de campo en el contenido "también afectará la resolución. De hecho, fgetcsves posible especificar los parámetros del separador de campo y el carácter que lo rodea.
    Inserte la descripción de la imagen aquí
    No hablaremos de la longitud del segundo parámetro. No sé cuánta eficiencia afecta, pero hay dos pasos más para analizar cada línea.
    El tercer parámetro es el separador de campo, que es el predeterminado ,.
    El cuarto parámetro es el contenedor de campo, que es el predeterminado ". Entonces, lo que acabo de decir en 2.3, cuando no necesita abrir WPS (solo leerlo usted mismo), además de reemplazar el contenido, también puede escribir el carácter envolvente del campo como otra cosa al escribir, y luego pasar el símbolo parámetro al analizar.

Supongo que te gusta

Origin blog.csdn.net/z772532526/article/details/101107948
Recomendado
Clasificación