XETOWN

질문/답변

웹에 관련된 질문과 답변을 나눌 수 있습니다.

 core/classes/frontendfile/FrontEndFileHandler.class.php 파일에 있는 _normalizeFilePath() 함수를 보고 있습니다.

 

이 함수 내에

 

elseif(!strncmp($path, '//', 2))
{
   return preg_replace('#^//+#', '//', $path);
}


$path = preg_replace('@/\./|(?<!:)\/\/@', '/', $path);

while(strpos($path, '/../'))
{
   $path = preg_replace('/\/([^\/]+)\/\.\.\//s', '/', $path, 1);
}

 

#^//+# 하고 @/\./|(?<!:)\/\/@ 이부분을 어떻게 해석해야할지 모르겠네요.

preg_replace(pattern, replace_str, original_str) 함수가 original_str 에서 pattern에 맞는 문자열을 찾아서 replace_str로 바꿔주는 함수로 알고,, 정규표현식 패턴이구나 싶어서 그 쪽으로 접근했는데 모르겠네요.

정규표현식 테스트 사이트 regexr.com 에서도 형식에 맞지 않는다고 뜨고.. 아시는분 지식 공유 부탁드립니다ㅠ

 

  • profile
    기진곰 2016.08.13 00:29:23

    자바스크립트의 정규식은 반드시 /슬래시/로 감싸야 하지만 PHP는 양쪽이 똑같기만 하면 다 받아줍니다.

    정규식 안에 "/" 문자가 들어가는 경우 혼란을 막기 위해 아주 편한 기능인데,

    regexr 같은 곳에서는 안 받아주죠 ㅎㅎ

     

    아무튼 앞뒤가 같은 특수문자는 "여기부터 여기까지 정규식이다"라는 뜻이므로 해석할 때는 무시해도 됩니다.

     

    #^//+# → (실제 정규식은 ^//+ 입니다) → "/"로 시작하고 "/"가 1개 이상 더 있는 경우를 찾습니다.

    HTTP 주소와 HTTPS 주소 모두 호환되는 외부 리소스를 로딩할 때

    //fonts.googleapis.com/css?family=Open+Sans 이렇게 "//"로 시작하는 주소를 종종 쓰는데,

    예전의 XE에서는 이런 주소를 입력하려면 ///fonts.googleapis.com 이렇게 "/"를 3개 입력해야 했어요.

    요즘은 2개만 입력해도 정상 작동하므로, 예전 방식처럼 3개 입력한 경우 2개로 줄여 주는 정규식입니다.

     

    @/\./|(?<!:)\/\/@ → (실제 정규식은 /\./|(?<!:)\/\/ 입니다)

    한글 폰트에서 흔히 "\"로 표시되는 백슬래시(\) 문자는 특수기호 입력을 위해 사용한 것이니 일단 무시하고요...

    "|"를 기준으로 구분하여 두 가지 서로 다른 것을 매칭하고 있습니다.

    첫째는 example.com/xe/./files/attach 이렇게 불필요한 점이 들어간 부분을 찾아서

    example.com/xe/files/attach 이렇게 "/" 하나만 남기고 삭제합니다.

    둘째는 example.com/xe//files/attach 이렇게 "/"가 이중으로 들어간 부분을 찾아서

    마찬가지로 하나만 남기고 삭제합니다.

    단, "http://" 형태로 되어 있는 것까지 "/"를 하나로 줄이면 곤란하므로

    (?<!:) negative lookbehind assertion을 사용하여 ":" 바로 뒤에 있는 "//"는 매칭하지 않습니다.

  • ?
    갸라 2016.08.13 00:48:23
    친절한 설명 감사합니다!! 정규표현식이 언어마다 다르게 적용된다는건 처음알았네요~
    기진곰님 덕분에 매번 많이 알아갑니다ㅎㅎ

List of Articles
번호 제목 글쓴이 날짜
2601 댓글에 추천기능만 포인트를 사용할 수 있게 할 수 있을까요? 바인등 2016.08.15
2600 글을 쓸 때 사용자가 특정회원 이상만 볼수 있게 설정이 가능할까요? 4 바인등 2016.08.15
2599 이런식으로 게시판을 꾸미려면 어떻게 해야하나요 .. ? 4 file 아즈냥 2016.08.14
2598 글 삭제시 포인트 감소 이후, 휴지통 비우기시 다시한번 포인트감소 하는 문제 xelover 2016.08.14
2597 xe게시판에 비회원도 사진첨부할수있게 못하나요? 2 file 미니호 2016.08.14
2596 댓글 작성시 글 작성자에게 쪽지가 보내집니다. 2 alrin 2016.08.13
2595 XE 알림센터 Lite / 모바일 화면 질문드립니다. 2 file 재크 2016.08.13
2594 xe core 분석중, FrontEndFileHandler.class.php 파일에서 질문드립니다. 2 갸라 2016.08.13
2593 우분투 고수님께 질문 드립니다 6 비누 2016.08.13
2592 글 작성화면에서 뒤로가기 버튼을 눌렀을 때 경고창을 띄우고 싶습니다. 2 file 아스타 2016.08.13
2591 네이버 사이트 등록 문의 2 file 메비우스의닭 2016.08.13
2590 웹호스팅 php 변경 후 500 에러 증상 6 Novelic 2016.08.13
2589 아이템샵 모듈 질문 5 데버 2016.08.13
» xe core 분석 중 정규표현식이 나왔는데.. 무슨말인지 모르겠네요ㅠㅠ 2 갸라 2016.08.12
2587 글/댓글 중복 클릭 방지 8 BESETO 2016.08.12
2586 모바일에서 PC버전 눌렀을 시 에러문의 file 메비우스의닭 2016.08.12
2585 XE 코어 1.8.15에서 라이믹스로 변경하려면 무엇을 설치해야 하나요? 4 Novelic 2016.08.12
2584 XE core 분석 도중 $path{0} 가 이해가 안됩니다. 2 갸라 2016.08.12
2583 라이믹스 넘겨보는 사진 애드온 에러? 1 sar**** 2016.08.12
2582 nginx php 연동 도와주세요 1 S++ 2016.08.12
Board Pagination Prev 1 ... 110 111 112 113 114 115 116 117 118 119 ... 245 Next
/ 245
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...