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
번호 분류 제목 날짜
공지 질문/답변 답변을 확실히 받기위한 질문자 지침서 20 2015.12.31
2603 질문/답변 글을 쓸 때 사용자가 특정회원 이상만 볼수 있게 설정이 가능할까요? 4 2016.08.15
2602 질문/답변 이런식으로 게시판을 꾸미려면 어떻게 해야하나요 .. ? 4 file 2016.08.14
2601 질문/답변 글 삭제시 포인트 감소 이후, 휴지통 비우기시 다시한번 포인트감소 하는 문제 2016.08.14
2600 질문/답변 xe게시판에 비회원도 사진첨부할수있게 못하나요? 2 file 2016.08.14
2599 질문/답변 댓글 작성시 글 작성자에게 쪽지가 보내집니다. 2 2016.08.13
2598 질문/답변 XE 알림센터 Lite / 모바일 화면 질문드립니다. 2 file 2016.08.13
2597 질문/답변 xe core 분석중, FrontEndFileHandler.class.php 파일에서 질문드립니다. 2 2016.08.13
2596 질문/답변 우분투 고수님께 질문 드립니다 6 2016.08.13
2595 질문/답변 글 작성화면에서 뒤로가기 버튼을 눌렀을 때 경고창을 띄우고 싶습니다. 2 file 2016.08.13
2594 질문/답변 네이버 사이트 등록 문의 2 file 2016.08.13
2593 질문/답변 웹호스팅 php 변경 후 500 에러 증상 6 2016.08.13
2592 질문/답변 아이템샵 모듈 질문 5 2016.08.13
» 질문/답변 xe core 분석 중 정규표현식이 나왔는데.. 무슨말인지 모르겠네요ㅠㅠ 2 2016.08.12
2590 질문/답변 글/댓글 중복 클릭 방지 8 2016.08.12
2589 질문/답변 모바일에서 PC버전 눌렀을 시 에러문의 file 2016.08.12
2588 질문/답변 XE 코어 1.8.15에서 라이믹스로 변경하려면 무엇을 설치해야 하나요? 4 2016.08.12
2587 질문/답변 XE core 분석 도중 $path{0} 가 이해가 안됩니다. 2 2016.08.12
2586 질문/답변 라이믹스 넘겨보는 사진 애드온 에러? 1 2016.08.12
2585 질문/답변 nginx php 연동 도와주세요 1 2016.08.12
2584 질문/답변 라이믹스의 설문조사를 xe에서 적용하려면? 2 2016.08.12
Board Pagination Prev 1 ... 36 37 38 39 40 41 42 43 44 45 ... 171 Next
/ 171
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...