- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストファイルの処理について)
テキストファイルの処理について
このQ&Aのポイント
- 初心者のためテキストファイルの処理に困っています。fgets、file_put_contents、str_replace、arrayなどの関数を使えば処理できると思いますが、構文がわかりません。参考になるサイトやアドバイスを教えてください。
- テキストファイルの処理についてアドバイスがほしいです。具体的には、テキストファイルの整形や特定の行の削除などの処理を行いたいです。どのような関数を使えばいいでしょうか。アドバイスをお願いします。
- テキストファイルの処理について質問です。初心者であり、PHP5を学んでからまだ50時間ほどしか経っていません。具体的な処理方法や関数の使用方法について教えていただけますか。参考になるサイトやアドバイスがあれば教えてください。
- みんなの回答 (4)
- 専門家の回答
お礼
何から何まで、本当にすいません。 感謝にたえません。 今度こそ出来るよう頑張ります。 取り急ぎ御礼まで。
補足
出来ました。 ありがとうございました。 2行目と21行目に下記メッセージが出ました。 Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unable to detect character encoding $file = mb_convert_encoding($file, "UTF-8", "auto");→ $file = mb_convert_encoding($file, "UTF-8", "Shift_JIS"); header('Content-Type: text/plain; charset=Shift_JIS'); → //header('Content-Type: text/plain; charset=Shift_JIS'); で解決しました。 教えていただいたプログラムは、一行ずつ意味を解釈し勉強してみます。 私はVB6で育った世代で、配列の概念が極めて希薄だと教えていただいた中で感じています。 *VBだと1行ずつ読んでその中で処理しworkファイルに落とす、ような感じになると思います。 重ね重ねありがとうございました。 深謝しています。 最後に完成したソースを貼っておきます。 <?php $file = file_get_contents('test01.txt'); $file = mb_convert_encoding($file, "UTF-8", "Shift_JIS"); // preg用にUTF-8に文字コード変換(preg系はUTF-8にすると全角文字を扱える正規表現として機能します) /* 行単位の配列に (1次元配列) */ $array = preg_split("/(?:\r\n){2,}/m", $file); // 空行区切りで分割 /* セル単位の配列に (2次元配列) */ foreach($array as &$value){ $value = preg_split("/\r\n/", $value); // CSVのセルデータに分割 (配列の値を更に配列に。ここで2次元配列になります) } /* CSV形式に変換 */ foreach($array as &$value){ $value = preg_replace('/"/', '""', $value); // ダブルクオートをエスケープ $value = preg_replace('/^.*$/', '"$0"', $value); // セルデータ全体をダブルクオートで括る $value = implode(',', $value); // 2次元配列→1次元配列 } $output = implode("\r\n", $array); // 1次元配列→文字列 $output = mb_convert_encoding($output, "Shift_JIS", "auto"); // Shift_JIS文字コードに //header('Content-Type: text/plain; charset=Shift_JIS'); // Content-Typeヘッダ出力 echo $output; // 出力 file_put_contents("test02.txt","$output"); ?> ---完成したソース <?php $file = file_get_contents('test01.txt'); $file = mb_convert_encoding($file, "UTF-8", "auto"); // preg用にUTF-8に文字コード変換(preg系はUTF-8にすると全角文字を扱える正規表現として機能します) /* 行単位の配列に (1次元配列) */ $array = preg_split("/(?:\r\n){2,}/m", $file); // 空行区切りで分割 /* セル単位の配列に (2次元配列) */ foreach($array as &$value){ $value = preg_split("/\r\n/", $value); // CSVのセルデータに分割 (配列の値を更に配列に。ここで2次元配列になります) } /* CSV形式に変換 */ foreach($array as &$value){ $value = preg_replace('/"/', '""', $value); // ダブルクオートをエスケープ $value = preg_replace('/^.*$/', '"$0"', $value); // セルデータ全体をダブルクオートで括る $value = implode(',', $value); // 2次元配列→1次元配列 } $output = implode("\r\n", $array); // 1次元配列→文字列 $output = mb_convert_encoding($output, "Shift_JIS", "auto"); // Shift_JIS文字コードに header('Content-Type: text/plain; charset=Shift_JIS'); // Content-Typeヘッダ出力 echo $output; // 出力 ?>