teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

修正いたしました。よろしくお願いします。

2018/03/22 06:38

投稿

T.FUJII
T.FUJII

スコア21

title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  フォームから送信されたCSVファイルをバリデーションしたいです。具体的にはcsvファイルかどうかを調べた後、SqlFileObjectを使い、CSVファイルを開いて行展開し、list関数を使い変数 $phone_number に格納して、その変数に対して、正規表現をかけてバリデーションしています。$request以外の変数などをvalidate()を使いバリデーションできますでしょうか?
4
4
 
5
+ ※追記
6
+ CSVファイルのレコードを変数に展開して、
7
+ その変数の電話番号に対して正規表現をかけたいです。
8
+
5
9
  ###該当のソースコード
6
10
 
7
11
  ```php

2

文言の修正

2018/03/22 06:38

投稿

T.FUJII
T.FUJII

スコア21

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,6 @@
1
1
  ###前提・実現したいこと
2
2
 
3
- フォームから送信されたCSVファイルをバリデーションしたいです。
4
- 具体的にはcsvファイルかどうかを調べた後、SqlFileObjectを使い、CSVファイルを開いて行展開し、list関数を使い変数 $phone_number に格納して、その変数に対して、正規表現をかけてバリデーションしています。validate()などを使い正規表現バリデーションできますでしょうか?
3
+ フォームから送信されたCSVファイルをバリデーションしたいです。具体的にはcsvファイルかどうかを調べた後、SqlFileObjectを使い、CSVファイルを開いて行展開し、list関数を使い変数 $phone_number に格納して、その変数に対して、正規表現をかけてバリデーションしています。$request以外の変数などをvalidate()を使いバリデーションできますでしょうか?
5
4
 
6
5
  ###該当のソースコード
7
6
 

1

csvupload修正

2018/03/22 06:34

投稿

T.FUJII
T.FUJII

スコア21

title CHANGED
File without changes
body CHANGED
@@ -41,6 +41,33 @@
41
41
 
42
42
  ```
43
43
  【uploadCsv】
44
+ private function uploadCsv(string $file_path)
45
+ {
46
+ // csvファイル読み込み
47
+ $file = new SplFileObject($file_path);
48
+ $file->setFlags(SplFileObject::READ_CSV);
49
+
50
+ // エラー行を格納する配列を定義
51
+ $err_data = [];
52
+
53
+ foreach ($file as $key => $row) {
54
+
55
+ // ヘッダ無視
56
+ if ($key === 0) continue;
57
+
58
+ list(
59
+ $company_id,
60
+ $employment_site_id,
61
+ $company_name,
62
+ $phone_number,
63
+ $created_at,
64
+ $updated_at
65
+ ) = $row;
66
+
67
+ /*
68
+   * バリデーション
69
+ */
70
+
44
71
  // 電話番号の存在確認
45
72
  if ($phone_number) {
46
73
  // 電話番号は正しい形式か?
@@ -50,6 +77,9 @@
50
77
  $err_data[] = "会社ID ${company_id} の電話番号 ${phone_number} の形式が違います。確認してください";
51
78
  continue;
52
79
  }
80
+
81
+ 以下略
82
+
53
83
 
54
84
  ```
55
85