마지막 URL 세그먼트 가져오기

inhalin·2022년 8월 25일
0

Laravel

목록 보기
7/7

url의 마지막 세그먼트만 가져와서 조건 분기를 하려고 했다. 예를 들어 https://test.com/users/list에서 list만 가져오고 싶다.

현재 url은 컨트롤러에서 $this->request->url()로 가져오면 된다.

방법 1

문자열로 받아온 url을 / 기준으로 잘라서 배열로 만들고 마지막 부분 가져오기

$urlArr = explode('/', $this->request->url());
$res = end($urlArr);
echo $res; 	// list

방법 2

basename() 함수 사용

$res = basename($this->request->url());
echo $res;	// list

번외: basename() 함수

basename()은 원래 어떤 경로에 있는 파일명을 반환해주는 php 함수다.

basename(string $path, string $suffix = ""): string

첫번째 매개변수로 경로를 받고 이거는 필수다.

두번째 매개변수는 선택인데 suffix를 지정해주면 지정된 문자열을 제거하고 반환하고, 안넣어주면 그냥 다 반환한다.

예를 들어서 ...\inhalin\test.txt에서 마지막에 있는 test.txt라는 파일명만 가져오고 싶으면

$path = '...\inhalin\test.txt';
$name = basename($path);
echo $name; // test.txt

이렇게 경로를 넣어주면 파일명만 반환해준다.

근데 확장자명은 없애고 순수하게 파일명만 받고 싶을 수 있다. 이럴 때는 suffix에 확장자명을 지정해주면 된다.

$path = '...\inhalin\test.txt';
$name = basename($path, '.txt');
echo $name; // test

그러면 이렇게 확장자명은 제거하고 파일명만 반환되는걸 확인할 수 있다.

0개의 댓글