짧은주소 정규표현식 질문 (preg_match)
본문
짧은 주소 (http://abc.kr/free) 사용 시 정규표현 함수(preg_match)의 정규표현식이 궁금합니다.
http://abc.kr/free 의 맨 뒤의 bo_table 값인 free만 가져오고 싶은데요.
모든 주소 공통점을 살펴보면 '/' 이 것이 3개가 들어있는데 '/' 이 3개를 건너뛴
정규표현식은 어떻게 쓰면 될까요?
답변 2
url 이 그누보드가 설치된 사이트의 URL 이고 반드시 주어진 형태라면..
$url = 'http://abc.kr/free';
$bo_table = str_replace(G5_URL.'/', '', $url);
그누보드가 설치된 사이트가 아니고... URL 이 주어진 형태라면..
$url = 'http://abc.kr/free';
preg_match('#(https?:)?//([^/]+)/([^/^\?^\#]+)#', $url, $m);
$bo_table = ($m ? $m[3] : '');
두번째 코드의 장점은... $url 이 약간 다른 형태여도 동작한다는 것입니다.
예를들면,
$url = 'https://abc.kr/free/1234';
$url = 'http://abc.kr/free/1234';
$url = '//abc.kr/free/1234';
$url = 'http://abc.kr/free/p2'; // 2 페이지
$url = 'http://abc.kr/free?sca=&sfl=wr_subject||wr_content&stx=테스트'; // 검색
등의 URL 에 대해서도 정상 동작한다는거죠. ^^
!-->!-->!-->
$test = explode('/', $row2['me_link']);
echo $test[3];
이렇게 해결했습니다.
정규식 표현 검증보다 속도가 괜찮을진 모르겠네요..
더 좋은 방법 아시는 분 있으시면 댓글 부탁드립니다!
!-->
답변을 작성하시기 전에 로그인 해주세요.