多数の txt ファイルを含む csv ファイルを作成する
P粉287254588
P粉287254588 2024-02-26 17:29:54
0
2
466

大きな txt ファイルを読み取り、最初の行をヘッダーとして保存し、残りのテキストをコンテンツとして保存して、CSV ファイルにエクスポートしようとしています。

反復によって増加する CSV の ID を作成していますが、反復中に確認できないエラーが発生すると、配列の内容を保存するときに最後の内容が追加されるためです。値。

id、titulo、contenido という名前の 3 つの「列」を持つ CSV を作成し、各ファイルごとに情報を配列に保存する必要があります。 1 つの txt ファイル、1 つの配列の反復。

私の下手な英語でごめんなさい。

これは私のコードです:

<?php
/* Cogemos todos los archives txt de la carpeta archives del servidor */
$files = glob("archivos/*.txt");
/* 保護者向けのクリーモスと、重要な情報を収集します */
$datosparacsv=array(array("ID","タイトル","コンテンツ"));
/* クリーム色の配列とデータのインポート */
$id = 0;
/* 記録されたデータを記録する */
foreach($files as $file) {
    /* 主要なタイトルのアーカイブ txt */
    $titulo = トリム(fgets(fopen($file, 'r')));
    /* Sacamos el Resto del contenido pero quitamos la primera linea con el condicional if*/
    $archivo = ファイル($file);
    foreach ($archivo as $num=>$line){
        if ($num==0) {
            続く;
        }
        それ以外{
            $contenido .= $line."\n";
        }
    }
    /* CSV の配列を含むコンテニドの追加 */
    array_push($datosparacsv, array($id,$titulo,$contenido));
    /* スマモス ウノ アル ID パラ ケ シー ウーニコ */
    $id;
}
$delimitador = ','; // fputcsv のパラメータ
$enclosure = '"'; // fputcsv のパラメータ
//配列をcsvに変換
$archivocsv = fopen('entradas.csv', 'w ');
foreach ($datosparacsv as $data_line) {
    fputcsv($archivocsv, $data_line, $delimitador, $enclosure);
}

$data_read="";
巻き戻し($archivocsv);
//CSVを読み込む
while (!feof($archivocsv)) {
    $data_read .= fread($archivocsv, 8192); // カンマで区切られたすべてのデータの文字列を返します。
}
fclose($archivocsv);
エコー $data_read;

読み取るファイルの例。

ファイル1.txt

タイトル 1
テキスト 1

ファイル2.txt

タイトル 2
テキスト 2

CSV

id, タイトル, コンテンツ, 0, タイトル 1, テキスト 1, 1, タイトル 2, テキスト 2

本当にありがとう、友達。

P粉287254588
P粉287254588

全員に返信(2)
P粉198670603

回答をより適切にフォーマットできるため、このフォームを使用します。

$contenido 列には、最初の行を除いたファイルの内容全体が必要です。

これで、コードを使用すると問題なく動作しますが、同じファイルの内容の後に複数行がある場合、各行が結果の新しい行として使用されます。

たとえば、私は今このファイルを使用しています

ファイル1.txt

タイトル 1
テキスト 1、テキスト 1

ファイル 1
にさらにテキストを追加

ファイル2.txt

タイトル 2
テキスト 2、テキスト 2、テキスト 2、テキスト 2、テキスト 2、テキスト 2

同じアーカイブの一部のテキスト 2

これにより、entradas.csv が生成されます

ID、タイトル、コンテンツ
0,"タイトル 1","本文 1,本文 1"
1、「タイトル1」、
2,"タイトル 1","ファイル 1 にさらにテキストを追加"
3、"タイトル 2"、"テキスト 2、テキスト 2、テキスト 2、テキスト 2、テキスト 2、テキスト 2"
4、「タイトル2」、
5,"タイトル 2","同じアーカイブのテキスト 2"

しかし、これが必要です:

ID、タイトル、コンテンツ
0,"タイトル 1","本文 1,本文 1

ファイル 1 にさらにテキストがあります」
1,"タイトル 2","テキスト 2、テキスト 2、テキスト 2、テキスト 2、テキスト 2、テキスト 2

同じアーカイブの一部のテキスト 2"

txt ファイルはブログ投稿であるため、コンテンツのすべてのスペースと \n を txt ファイルに保存することが非常に重要です。

ファイルの例 .txt

¿コモ・プエド・カメル・ガレタス?¿クアントス・サボレス・デ・ガレタスの干し草?

\n とすべてを保存するには、タイトルの後のすべてのテキストを同じ行に置く必要があります。

ファイルには CSV が 1 行しかありません。

ありがとうございます。英語が悪くてごめんなさい。

いいねを押す +0
P粉548512637

19 行目の

$contenido は未定義です。存在しない変数を .= に接続しようとします。各アーカイブ行は $datosparacsv で定義されているため、$contenido 変数も必要ありません。

$delimitador$enclosure は、定義された値がデフォルト値でもあるため、定義する必要はありません。

これは、予想される CSV 出力と、変更された各行を説明するコメントを含む正しい PHP コードです。

また、必要に応じてコンテンツ内の新しい行とスペースも保持します。

ファイル/1.txt

タイトル 1
テキスト 1

ファイル/2.txt

タイトル 2
テキスト2

テキスト3



テキスト4

これにより、このデータを含む entradas.csv が保存されます。

ID、タイトル、コンテンツ
0,"タイトル1","タイトル1"
1、「タイトル 2」、「テキスト 2」

テキスト3



texto4"
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート