테스트 사이트 - 개발 중인 베타 버전입니다

짧은주소 정규표현식 질문 (preg_match) 채택완료

Modify 5년 전 조회 2,406

짧은 주소 (http://abc.kr/free) 사용 시 정규표현 함수(preg_match)의 정규표현식이 궁금합니다.

 

http://abc.kr/free 의 맨 뒤의 bo_table 값인 free만 가져오고 싶은데요.

모든 주소 공통점을 살펴보면 '/' 이 것이 3개가 들어있는데 '/' 이 3개를 건너뛴

정규표현식은 어떻게 쓰면 될까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

url 이 그누보드가 설치된 사이트의 URL 이고 반드시 주어진 형태라면..

</p>

<p>$url = '<a href="http://abc.kr/free';" target="_blank" rel="noopener noreferrer">http://abc.kr/free';</a>

$bo_table = str_replace(G5_URL.'/', '', $url);</p>

<p>

 

그누보드가 설치된 사이트가 아니고... URL 이 주어진 형태라면..

</p>

<p>$url = '<a href="http://abc.kr/free';" target="_blank" rel="noopener noreferrer">http://abc.kr/free';</a></p>

<p>preg_match('#(https?:)?//([^/]+)/([^/^\?^\#]+)#', $url, $m);</p>

<p>$bo_table = ($m ? $m[3] : '');</p>

<p>

 

두번째 코드의 장점은... $url 이 약간 다른 형태여도 동작한다는 것입니다.

예를들면,

</p>

<p>$url = '<a href="https://abc.kr/free/1234';" target="_blank" rel="noopener noreferrer">https://abc.kr/free/1234';</a></p>

<p>$url = '<a href="http://abc.kr/free/1234';" target="_blank" rel="noopener noreferrer">http://abc.kr/free/1234';</a></p>

<p>$url = '//abc.kr/free/1234';</p>

<p>$url = '<a href="http://abc.kr/free/p2';" target="_blank" rel="noopener noreferrer">http://abc.kr/free/p2';</a> // 2 페이지</p>

<p>$url = '<a href="http://abc.kr/free?sca=&sfl=wr_subject||wr_content&stx=테스트';" target="_blank" rel="noopener noreferrer">http://abc.kr/free?sca=&sfl=wr_subject||wr_content&stx=테스트';</a> // 검색</p>

<p>

등의 URL 에 대해서도 정상 동작한다는거죠. ^^

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

M
5년 전

</p>

<p>$test = explode('/', $row2['me_link']);</p>

<p>echo $test[3];</p>

<p>

 

이렇게 해결했습니다.

정규식 표현 검증보다 속도가 괜찮을진 모르겠네요..

 

더 좋은 방법 아시는 분 있으시면 댓글 부탁드립니다!

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인