関数の概要
PHPの str_getcsv 関数は、CSV形式の文字列をパースし、その内容を配列として取得するための関数です。ファイルから直接読み込むのではなく、文字列として渡すことで簡単にCSVデータの分割が可能です。特に小さなCSVデータの処理や、APIなどから取得したCSV形式の文字列を処理したい場合に便利です。
パラメータの説明
string $input– CSV形式の文字列。必須です。string $delimiter– フィールドの区切り文字。省略時は,(カンマ)が使われます。string $enclosure– テキストを囲む文字。省略時は"(ダブルクオート)が使われます。string $escape– エスケープ文字。省略時は\(バックスラッシュ)が使われます。
戻り値
CSV文字列を分割して、それぞれのフィールドを要素とした配列を返します。引数に不正な文字列が渡された場合や、処理できない場合は FALSE を返すこともあります。
使用例
基本的な使い方
$csvString = "りんご,みかん,バナナ";
$array = str_getcsv($csvString);
print_r($array);
この例ではカンマ区切りの文字列を配列に変換し、["りんご", "みかん", "バナナ"] を得ています。
カスタム区切り文字を使う
$csvString = "東京|大阪|名古屋";
$array = str_getcsv($csvString, "|");
print_r($array);
区切り文字がカンマではなくパイプ(|)の場合、delimiter パラメータで指定することで正しく分割できます。
囲み文字やエスケープ文字の指定
$csvString = "'1','2,3','4''5'";
$array = str_getcsv($csvString, ",", "'");
print_r($array);
この例では囲み文字をシングルクオートに変更し、カンマを含むデータやエスケープされたシングルクオートを正しく処理しています。
複数行CSVの処理例
$csvMultiple = "a,b,cnd,e,f";
$lines = explode("n", $csvMultiple);
foreach ($lines as $line) {
$row = str_getcsv($line);
print_r($row);
}
複数行のCSV文字列を行ごとに配列化する方法です。改行で分割した後、それぞれの行を str_getcsv に渡しています。
関連する関数
fgetcsv– ファイルポインタからCSV行を読み込み配列に変換するexplode– 文字列を指定区切り文字で分割する(単純な区切り文字分割用)str_replace– 文字列置換により簡単なCSVの加工に使用できる
まとめ
str_getcsv はCSV形式の文字列を簡単に配列に変換できる便利な関数です。区切り文字や囲み文字、エスケープ文字も柔軟に設定できるため、多様なCSVフォーマットに対応可能です。特にファイルを使わずに文字列として処理したいシーンで重宝します。初心者でも簡単に扱えるため、文字列操作の基本として覚えておくとよいでしょう。
