大きな 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
本当にありがとう、友達。
回答をより適切にフォーマットできるため、このフォームを使用します。
$contenido 列には、最初の行を除いたファイルの内容全体が必要です。
これで、コードを使用すると問題なく動作しますが、同じファイルの内容の後に複数行がある場合、各行が結果の新しい行として使用されます。
たとえば、私は今このファイルを使用しています
ファイル1.txt
にさらにテキストを追加ファイル2.txt
これにより、entradas.csv が生成されます
しかし、これが必要です:
txt ファイルはブログ投稿であるため、コンテンツのすべてのスペースと \n を txt ファイルに保存することが非常に重要です。
ファイルの例 .txt
\n とすべてを保存するには、タイトルの後のすべてのテキストを同じ行に置く必要があります。
ファイルには CSV が 1 行しかありません。
ありがとうございます。英語が悪くてごめんなさい。
19 行目の
$contenido
は未定義です。存在しない変数を.=
に接続しようとします。各アーカイブ行は$datosparacsv
で定義されているため、$contenido
変数も必要ありません。$delimitador
と$enclosure
は、定義された値がデフォルト値でもあるため、定義する必要はありません。これは、予想される CSV 出力と、変更された各行を説明するコメントを含む正しい PHP コードです。
また、必要に応じてコンテンツ内の新しい行とスペースも保持します。
ファイル/1.txt
ファイル/2.txt
これにより、このデータを含む entradas.csv が保存されます。