Rumah > Soal Jawab > teks badan
Saya cuba membaca fail txt yang besar dan menyimpan baris pertama sebagai pengepala dan teks yang lain sebagai kandungan, kemudian eksport ke fail CSV.
Saya mencipta id untuk CSV yang ditambah dengan lelaran, tetapi apabila saya mendapat ralat yang tidak dapat saya lihat dalam lelaran, kerana apabila ia menyimpan kandungan dalam tatasusunan, ia menambah kandungan terakhir pada nilai.
Saya perlu mencipta CSV dengan 3 "lajur" bernama id, gelar dan kandungan dan menyimpan maklumat dalam tatasusunan setiap fail. Satu fail txt, satu lelaran tatasusunan.
Maaf atas bahasa Inggeris saya yang teruk.
Ini kod saya:
<?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;
Contoh fail untuk dibaca.
Fail 1.txt
Titulo 1 texto 1
Fail 2.txt
Titulo 2 texto 2
CSV
id, titulo, contenido, 0, Titulo 1, texto 1, 1, Titulo 2, texto 2
Terima kasih banyak kawan.
P粉1986706032024-02-27 11:15:53
Saya menggunakan borang ini kerana saya boleh memformatkan jawapan saya dengan lebih baik.
Saya memerlukan keseluruhan kandungan fail tolak baris pertama untuk berada dalam lajur $contenido.
Kini, penggunaan kod anda berfungsi dengan baik, tetapi jika fail yang sama mempunyai lebih daripada satu baris selepas kandungan, ia akan menggunakan setiap baris sebagai baris baharu untuk hasilnya.
Sebagai contoh, saya menggunakan fail ini sekarang
Fail 1.txt
Titulo 1 texto 1,texto 1 Some more text in file 1
Fail 2.txt
Titulo 2 texto 2, texto 2, texto 2, texto 2, texto 2, texto 2 Some text 2 of the same archive
Ini akan menjana entradas.csv
iniID,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"
Tetapi saya perlukan ini:
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"
Amat penting kandungan menyimpan semua ruang dan n dalam fail txt kerana fail txt adalah catatan blog.
Contoh fail .txt
¿Como puedo comer galletas?<-- Title Las galletas se comen con la boca, poco a poco masticando.¿Cuántos sabores de galletas hay?
Pues hay de todos los que puedas imaginar.
Semua teks selepas tajuk mesti kekal pada baris yang sama untuk menyimpan n dan segala-galanya.
Fail hanya mempunyai satu baris dalam CSV.
Terima kasih banyak-banyak dan saya minta maaf atas bahasa Inggeris saya.
P粉5485126372024-02-27 11:12:31
Ditakrifkan dalam $contenido
未定义,它试图将一个不存在的变量与 .=
连接起来。 $contenido
变量也不是必需的,因为每个存档行都在 $datosparacsv
pada baris 19.
Tidak perlu mentakrifkan $delimitador
和 $enclosure
, kerana nilai yang ditentukan juga merupakan nilai lalai.
Ini ialah kod PHP yang betul dengan output CSV yang dijangkakan dan ulasan yang menerangkan setiap baris yang diubah suai.
Ia juga mengekalkan baris dan ruang baharu dalam kandungan mengikut keperluan.
Fail/1.txt
Titulo 1 texto 1
Fail/2.txt
Titulo 2 texto 2 texto3 texto4
Ini akan menjimatkan entradas.csv dengan data ini.
ID,titulo,contenido 0,"Titulo 1","texto 1" 1,"Titulo 2","texto 2 texto3 texto4"