diff --git a/app/Http/Controllers/ProgramConstructController.php b/app/Http/Controllers/ProgramConstructController.php index ce73735..33225b7 100644 --- a/app/Http/Controllers/ProgramConstructController.php +++ b/app/Http/Controllers/ProgramConstructController.php @@ -63,11 +63,15 @@ class ProgramConstructController extends BaseController "message" => "该BVID下已有{$count}个节目关联,请手动添加", ]); } - $regex = "/^p(?P<part>\d{1,2})[-# _:,)]+(?P<time>(0?1[::])?(\d{1,3}[::])\d{1,2})?[ :]?(?P<content>.+)$/i"; - foreach (explode("\n", $content) as $line) { - $match = []; - $match_count = preg_match($regex, $line, $match); - if ($match_count > 0) { + $regex = "/^p(?P<part>\d{1,2})[-# _:,)]+(?P<time>(0?1[::])?\d{1,3}[::]\d{1,2}) ?(?P<content>.+)$/ui"; + DB::beginTransaction(); + try { + foreach (explode("\n", $content) as $line) { + $match = []; + $match_count = preg_match($regex, $line, $match); + if ($match_count === 0) { + continue; + } $time = $match["time"]; $time = str_replace(":", ":", $time); while (substr_count($time, ":") < 2) { @@ -83,6 +87,12 @@ class ProgramConstructController extends BaseController $program->save(); $program->video_pivots()->save($video_pivot); } + DB::commit(); + } catch (QueryException $e) { + DB::rollBack(); + return back()->withInput()->withErrors([ + "content" => $e->getMessage() + ]); } return redirect(route("program.construct.list")); }