
もくじ
数字かどうかの判定
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));
}
}






