Créez un fichier csv contenant un grand nombre de fichiers txt
P粉287254588
P粉287254588 2024-02-26 17:29:54
0
2
456

J'essaie de lire un gros fichier txt et d'enregistrer la première ligne comme en-tête et le reste du texte comme contenu, puis de l'exporter vers un fichier CSV.

Je crée un identifiant pour un CSV qui est incrémenté par itération, mais lorsque j'obtiens une erreur que je ne peux pas voir dans l'itération, car lorsqu'il enregistre le contenu dans le tableau, il ajoute le dernier contenu à la valeur.

Je dois créer un CSV avec 3 "colonnes" nommées id, titulo et contenido et enregistrer les informations dans un tableau par fichier. Un fichier txt, une itération de tableau.

Désolé pour mon mauvais anglais.

Voici mon code :

<?php
/* Cogemos todos los archivos txt de la carpeta archivos del servidor */
$files = glob("archivos/*.txt");
/* Creamos el array para guardar los datos y le metemos la primera línea que es el nombre de los campos a importar */
$datosparacsv=array(array("ID","titulo","contenido"));
/* Creamos el id que tendrá cada campo del array para después poder importar */
$id = 0;
/* Recorremos cada archivo para coger los datos */
foreach($files as $file) {
    /* Sacamos el título de la primera línea del archivo txt */
    $titulo = trim(fgets(fopen($file, 'r')));
    /* Sacamos el resto del contenido pero quitamos la primera linea con el condicional if*/
    $archivo = file($file);
    foreach ($archivo as $num=>$line){
        if ($num==0) {
            continue;
        }
        else{
            $contenido .= $line."\n";
        }
    }
    /* Añadimos el contenido extraido al array para luego pasarlo a CSV */
    array_push($datosparacsv, array($id,$titulo,$contenido));
    /* Sumamos uno al id para que sea único */
    $id++;
}
$delimitador = ','; //parameter for fputcsv
$enclosure = '"'; //parameter for fputcsv
//convert array to csv
$archivocsv = fopen('entradas.csv', 'w+');
foreach ($datosparacsv as $data_line) {
    fputcsv($archivocsv, $data_line, $delimitador, $enclosure);
}

$data_read="";
rewind($archivocsv);
//read CSV
while (!feof($archivocsv)) {
    $data_read .= fread($archivocsv, 8192); // will return a string of all data separeted by commas.
}
fclose($archivocsv);
echo $data_read;

Exemple de fichier à lire.

Fichier 1.txt

Titulo 1
texto 1

Fichier 2.txt

Titulo 2
texto 2

CSV

id, titulo, contenido, 0, Titulo 1, texto 1, 1, Titulo 2, texto 2

Merci beaucoup les amis.

P粉287254588
P粉287254588

répondre à tous(2)
P粉198670603

J'utilise ce formulaire car je peux mieux formater mes réponses.

J'ai besoin que tout le contenu du fichier moins la première ligne soit dans la colonne $contenido.

Maintenant, utiliser votre code fonctionne bien, mais si le même fichier contient plus d'une ligne après le contenu, il utilisera chaque ligne comme une nouvelle ligne pour le résultat.

Par exemple, j'utilise ce fichier maintenant

Fichier 1.txt

Titulo 1
texto 1,texto 1

Some more text in file 1

Fichier 2.txt

Titulo 2
texto 2, texto 2, texto 2, texto 2, texto 2, texto 2

Some text 2 of the same archive

Cela générera cet entradas.csv

ID,titulo,contenido
0,"Titulo 1","texto 1,texto 1"
1,"Titulo 1",
2,"Titulo 1","Some more text in file 1"
3,"Titulo 2","texto 2, texto 2, texto 2, texto 2, texto 2, texto 2"
4,"Titulo 2",
5,"Titulo 2","Some text 2 of the same archive"

Mais j'ai besoin de ça :

ID,titulo,contenido
0,"Titulo 1","texto 1,texto 1

Some more text in file 1"
1,"Titulo 2","texto 2, texto 2, texto 2, texto 2, texto 2, texto 2

Some text 2 of the same archive"

Il est très important que le contenu enregistre tous les espaces et n dans le fichier txt car le fichier txt est l'article de blog.

Exemple de fichier .txt

¿Como puedo comer galletas?¿Cuántos sabores de galletas hay?

Pues hay de todos los que puedas imaginar.

Tout le texte après le titre doit rester sur la même ligne pour enregistrer n et tout.

Un fichier n'a qu'une seule ligne au format CSV.

Merci beaucoup et je suis désolé pour mon anglais.

P粉548512637

Défini en $contenido 未定义,它试图将一个不存在的变量与 .= 连接起来。 $contenido 变量也不是必需的,因为每个存档行都在 $datosparacsv à la ligne 19.

Il n'est pas nécessaire de définir $delimitador$enclosure, car la valeur définie est également la valeur par défaut.

Il s'agit du code PHP correct avec la sortie CSV attendue et des commentaires expliquant chaque ligne modifiée.

Il préserve également les nouvelles lignes et espaces dans le contenu selon les besoins.

Fichier/1.txt

Titulo 1
texto 1

Fichier/2.txt

Titulo 2
texto 2

texto3



texto4

Cela enregistrera entradas.csv avec ces données.

ID,titulo,contenido
0,"Titulo 1","texto 1"
1,"Titulo 2","texto 2

texto3



texto4"
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal