본문 바로가기
IT/programming

[PHP] URI '/'(slash) 중복 처리 / preg_replace, 정규식

by 어느해겨울 2022. 3. 4.

URI '/'(slash) 중복 처리

 

URI를 처리하다보면 또는 문자열 처리를 하다보면  '/' (slash)를 사용자(또는 동료 개발자)가 중복으로 입력하는 경우가 종종 생긴다. 실수 또는 string merge 등등의 경우에 경로 끝에 / 처리하고 붙이는 string 선두에 / 이 있다던지..

어쨌든 중복된 / 를 정규식을 이용하여 없애려고 한다.

 

소스코드

<?php
    // '/' 중복 미처리
    $request_uri = "//api////device//status";
    var_dump($request_uri);


    // '/' 중복 처리
    $request_uri = "//api////device//status";
    $request_uri = preg_replace('#//+#', '/', $request_uri);
    var_dump($request_uri);
?>

 

결과

string(23) "//api////device//status"
string(18) "/api/device/status"

 

정규패턴에서 나타내는 #//+# 은

# : escape character 를 있는 그대로 사용한다 라는 의미. /를 \/ 이렇게 표현하지 않아도 되도록..

+ : multiple 이란 의미, {//, }과 같고 //, ////, //////, ... 같이 // 와 반복하여 매칭한다.

    즉, / 가 1개가 남을때까지 반복 수행한다.

 

위의 방식을 응용하면 꼭 / 가 아니더라도 다른 문자의 치환에도 활용이 가능하다.

 

끝.

댓글