もくじ
数字かどうかの判定
PHPだと関数では数字の判定が困難なので、正規表現で判定する
// 数字かどうかの判定 if (preg_match("/^[0-9]+$/", $target_string)) { // trueの処理 }
日付 yyyy-mm-ddの判定
// 日付のフォーマット yyyy-mm-dd の判定 if (preg_match('/\A[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}\z/', $target_string)) { // trueの処理 }
正規表現で値を抽出する
// 正規表現で値を抽出する if (preg_match('/key=(\w.+)&&value=(\w.+)&&option=(\w.+)/u', $item, $match)) { // trueの処理 $key = $match[1]; $value = $match[2]; $option = $match[3]; }
ファイルの判定 (LaravelのRequest->file()も利用)
拡張子とファイル名を判定
// 選択されたファイルの拡張子を取得する $file = $request->file('uploadFile); $extension = $file->getClientOriginalExtension(); //拡張子が.cssであることを確認 if ($extension !== "css") { return false; } // Laravel Validatorで判定 $array = [ 'file' => $file, ]; $validator = Validator::make($array, [ 'first_name' => [ 'require', 'file', 'mimetypes:text/css', ], ]); if ($validator->fails()) { // failの処理 } // ファイル名が「{半角英数}.css」であることを確認。但し「-」「_」は許可 if (!preg_match('/^[-_a-zA-Z0-9]+\.css$/', $file->getClientOriginalName())) { return false; }
コンフィグに値があるか判定
Firebaseのコンフィグの例
/** * パラメータが揃っているかバリデーション * * @param string * @return void or Illuminate\Http\JsonResponse */ protected function validateFirebaseConfig(string $firebase_config_plain) { $api_key = []; $project_id = []; $app_id = []; $measurement_id = []; // 足りないキーを格納する配列 $undefined_data = [ 'title' => null, 'message' => "パラメーターの値が不正です。", 'items' => [ 'key' => [] ] ]; // Firebase連携に必要なキーがあるかをバリデーション // パース preg_match('/apiKey: "(.+)"/', $firebase_config_plain, $api_key); preg_match('/projectId: "(.+)"/', $firebase_config_plain, $project_id); preg_match('/appId: "(.+)"/', $firebase_config_plain, $app_id); preg_match('/measurementId: "(.+)"/', $firebase_config_plain, $measurement_id); // キーが空の場合に足りないキーを教えてあげる if (!isset($api_key[self::FIREBASE_CONFIG_KEY_INDEX])) { $undefined_data['items']['key'][] = 'apiKey'; } if (!isset($project_id[self::FIREBASE_CONFIG_KEY_INDEX])) { $undefined_data['items']['key'][] = 'projectId'; } if (!isset($app_id[self::FIREBASE_CONFIG_KEY_INDEX])) { $undefined_data['items']['key'][] = 'appId'; } if (!isset($measurement_id[self::FIREBASE_CONFIG_KEY_INDEX])) { $undefined_data['items']['key'][] = 'measurementId'; } // 足りないキーを通知する処理 (異常系) if (!empty($undefined_data['items']['key'])) { abort(response()->json($undefined_data, 422)); } }