PHPでテキストファイルをCSV出力に変換する方法
この記事の例では、phpを使用してテキストファイルをcsv出力に変換する方法を説明します。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです
このクラスは、固定幅の CSV ファイルを変換するための迅速かつ簡単な方法を提供します。これを使用すると、SplFileObject を使用して反復を実行できるため、反復子は現在のメンバーのみを認識し、行文字を指定するためのオプションが提供されます。ほとんどのデータベースは CSV ファイルからのデータ入力をサポートしているため、このクラスは固定幅ファイルからデータを取得してデータベースに挿入する必要がある場合に特に便利です。
このクラスの便利な機能は、出力で必要ない場合にフィールドをスキップできることです。フィールドは配列で提供され、キーと値のペアを提供し、プライマリは値のオフセットを保持するか、フィールドのステータスを開始します。 value フィールドの幅または長さが含まれます。たとえば、12 = "10 は 12 ビットで始まり、フィールドの幅または長さは 10 文字です。
一番下の行の文字はデフォルトで「n」ですが、任意の文字に設定できます。
区切り文字のデフォルトはカンマですが、任意の文字に設定できます。
ファイルからの出力は、直接使用したり、ファイルに書き込んだり、データベースに挿入したり、その他の目的に使用したりできます。
PHP サンプルコードは次のとおりです:
コードをコピーします コードは次のとおりです:
/**
* 固定幅ファイルを CSV 形式に変換するクラス
* フィールド、区切り文字、行末文字を設定できます
*
* @著者ケビン・ウォーターソン
* @url http://phpro.org
* @version $Id$
*
*/
クラスfixed2CSVはSplFileObjectを拡張します
{
/**
*
* コンストラクターは当然、親コンストラクターを呼び出します
*
* @access 公開
* @param string 変換するファイルへのフルパス
*
*/
パブリック関数 __construct ( $filename )
{
親 :: __construct ( $filename );
}
/*
* Settor は、存在しないプロパティに値を割り当てようとすると呼び出されます
*
*@アクセス公開
* @param string $name 設定するプロパティの名前
* @parammixed $value プロパティの値
* @throw プロパティを設定できない場合は例外
*
*/
パブリック関数 __set ( $name , $value )
{
スイッチ( $name )
{
ケース 'eol' :
ケース「フィールド」:
大文字と小文字の区切り文字:
$this -> $name = $value ;
休憩
デフォルト:
新しい例外をスローします ( "$name を設定できません " );
}
}
/**
*
* Gettor これは、存在しないプロパティにアクセスしようとしたときに呼び出されます
*
* @access public
* @param string $name プロパティの名前
* @throw プロパティを設定できない場合は例外
* @return 文字列
*
*/
パブリック関数 __get ( $name )
{
スイッチ( $name )
{
ケース 'eol' :
" " を返します ;
ケース「フィールド」:
配列()を返す
大文字と小文字の区切り文字:
',' を返します ;
デフォルト:
新しい例外をスローします (「 $name を設定できません」 );
}
}
/**
*
* 親の現在のメソッドをオーバーライドし、行を変換します
*
* @access public
* @return string 固定幅の線の CSV 表現としての線、それ以外の場合は false
*
*/
パブリック関数の現在 ()
{
if( 親 :: 現在の () )
{
$csv = '' ;
$fields = new cachingIterator ( new ArrayIterator ( $this -> フィールド ) );
foreach( $fields as $f )
{
$csv .=rim (substr (parent :: current (), $fields -> key (), $fields -> current () ) );
$csv .= $fields ->hasNext () $this -> eol ;
}
$csv を返す
}
false を返します ;
}
} // 授業終了
?>
使用例使用例
コードをコピーします コードは次のとおりです:
試してみてください
{
/*** 変換する固定幅ファイル ***/
$file = 新しいfixed2CSV ( 'my_file.txt' );
/*** 開始位置 => 各フィールドの幅 ***/
$file -> フィールド = array( 0 => 10 , 10 => 15 , 25 => 20 , 45 => 25 );
/*** 変換された行を出力します ***/
foreach( $file as $line )
{
エコー$ライン
}
/*** 新しいインスタンス ***/
$new = 新しいfixed2CSV ( 'my_file.txt' );
/*** 最初と 3 番目のフィールドのみを取得します ***/
$new -> フィールド = array( 0 => 10 , 25 => 20 );
/*** 最初と 3 番目のフィールドのみを出力します ***/
foreach( $new as $line )
{
エコー$ライン
}
}
catch(例外 $e)
{
エコー $e ->
}
?>
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/935483.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/935483.html技術記事 phpでテキストファイルをcsv出力する方法 この記事ではphpでテキストファイルをcsv出力する方法について説明します。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです: このクラスは…