1


0

PHPでテキストエリア入力をCSVのように解析しますか?

私は人々がCSVファイルをテキストエリアに直接貼り付けて(「オリジナルテキスト」と呼ばれる)サイトを作成し、それを解析して、スクリプトから何かを生成しようとしています。 (fgetcsvを使用して)サーバー上のcsvファイルを解析する方法を知っていますが、fgetcsvにPOST変数から入力を取得する方法は知りません。 これまでのところ、私はこのようなことを試しましたが、役に立ちませんでした:

$file_handle = fopen("php://input", "r");

while (!feof($file_handle) ) {
    $line_of_text = fgetcsv($file_handle);
    echo $line_of_text[0] . '
';
}

2 Answer


6


`fgetcsv()`には、http://php.net/manual/en/function.str-getcsv.php [* str_getcsv()*]という名前のいとこがあります。 よくあることですが、素晴らしい名前が付けられています(一度だけ、一度下線が付いています)。 まぁ! しかし、私たちはまだPHPを愛しています。

例(衛生設備なし!!! ただし、この時点で必要なものは表示されません。)

$array_csv = str_getcsv($_POST["csv"]);


2


Pekkaの例は、CSVデータの1行に対して機能します。 ユーザーがCSVデータの複数の行を入力する場合、最初にこれを配列(以下の例では「$ lines」)に分解してから、それを反復処理し、str_getcsvで各行を解析する必要があります。

$array_csv = array();
  $lines = explode("\n", $_POST["csv"]);
  foreach ($lines as $line) {
    $array_csv[] = str_getcsv($line);
  }
}

参照:https://stackoverflow.com/a/8353397/1127583[csvを多次元配列に解析]