본문으로 바로가기

정규식 사용해서 매개변수의 형식 제한하기

예제 바로보자! 전에 포스팅한 라우트 기본종류, 매개변수 받는 방법을 보면 알수 있듯이

다음은 get이나 post 둘 다 받아서 사용할 수 있는 라우트 이며

locaselhost:8000/foo/ 라는 URL에서 id와 name 값을 받는 함수이다.

id는 아무 값도 안들어왔으면 기본으로 's88240'이라고 세팅이 되며

name값은 아무 값도 없을 경우 null로 처리됨을 알 수 있다.


정규식으로 id와 name값의 형식을 정할건데 route의 끝에 where이라고 입력하고 사용하면 된다.

다음은 id는 모든숫자와 영문자 대소문자 모두를 허용하되 다른 문자가 들어가서는 안됨을 뜻하며

name은 영문자 대소문자 모두를 허용하며 공백이 들어가도되지만 다른 문자는 들어가면 오류가 난다.

Route::any('foo/{id?}/{name?}', function($id = 's88240', $name = null)
{
    return 'ANY : '.$id.', Hello World \n'.
           'Your name is '.$name;

})->where(array('id' => '[0-9A-Za-z]+', 'name' => '[A-Za-z ]+'));

여러개일 경우는 이처럼 배열을 사용해서 표현하며 만약 name 하나에 대해서만 하고 싶을 경우에는 다음처럼 간단하게 사용해도된다.


->where('name', '[A-Za-z]+');