XETOWN

질문/답변

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

core/classes/template/TemplateHandler.class.php 를 분석하고 있습니다.

displayContent() 함수를 분석하다가 타고 타고 이리로 넘어오게 됐는데요..

private function _replacePath($match)
     {
          // return origin code when src value started '${'.
          debugPrint($match);
          if(preg_match('@^\${@', $match[1]))
          {
               return $match[0];
          }

          //return origin code when src value include variable.
          if(preg_match('@^[\'|"]\s*\.\s*\$@', $match[1]))
          {
               return $match[0];
          }

 

위의  preg_match('@^\${@', $match[1]) 에서 매치되는 부분이 존재하면, match[0] 을 리턴하게 돼있는데,

이게 무슨 의미인지 모르겠습니다. 그래서 match를 debugPrint() 함수를 이용해서 출력해봤습니다.

 

[classes/template/TemplateHandler.class.php:451] TemplateHandler->_replacePath() (Memory usage: current=2.63MB, peak=7.06MB): array('0'=>'<img src="./img/ico_default.jpg"', '1'=>'./img/ico_default.jpg')

 

이런식으로 나오는데 어떻게 받아들여야 할지 모르겠네요. 무슨뜻인지 혹시 아시는분 계시면 지식공유 부탁드립니다!

  • profile
    기진곰 2016.09.02 17:59:06

    이 함수는 정규식을 이용해서 템플릿 파일 내의 상대경로를 절대경로로 바꿔 주는 기능입니다. 템플릿을 개발하는 분은 템플릿 파일을 기준으로 적당히 상대경로만 입력해 놓으면 (예: css/example.css) 그 템플릿을 사용하는 각 사이트의 XE 설치 경로에 맞게 (예: /xe/modules/모듈명/skins/스킨명/css/example.css) 자동으로 변환이 됩니다. 템플릿 개발자가 각 사이트의 설치 경로까지 신경쓸 필요가 없도록 하기 위해서입니다.

     

    TemplateHandler.class.php 239줄에서 preg_replace_callback 함수를 사용하면서 콜백 함수로 지정한 것이 _replacePath 함수입니다. 즉 239줄의 정규식에 매칭되는 것들이 _replacePath 함수에 하나씩 $match로 들어오고, _replacePath 함수에서 적당히 조작하여 결과를 반환하면 239줄에서 그 결과로 치환되는 것입니다. 두 군데를 동시에 봐야 합니다. (클로져를 지원하지 않는 PHP 구버전에서는 정규식을 사용해서 복잡한 치환을 하려면 항상 이렇게 별도의 함수를 정의해야 했습니다.)

     

    이 함수에서 $match[0]을 반환한다는 것은 "치환하지 말고 그대로 둬라"는 뜻입니다. 정규식으로 콜백 함수를 호출하면 $match[0]에는 원래의 문자열이 그대로 담기고, $match[1], $match[2] 등에는 정규식으로 추출해 낸 조각들이 담기거든요. 원래의 문자열을 그대로 돌려주었으니 아무 것도 치환하지 말라는 뜻이지요.

     

    정규식 공부를 좀더 해보세요 *^^*

  • ?
    갸라 2016.09.03 11:58:10
    아 정말 감사합니다!! 매번 명확하게 답변해주셔서 쉽게 해결하고 있습니다. 너무 감사드립니다.
    기진곰님을 보고, 저도 가능한 많이 나누어야겠다는 생각이 듭니다ㅎ
  • profile
    구름이 2016.09.02 18:18:03
    갸라님이 작성하신 질문 글 보면서 저도 하나씩 배워갑니다^^
  • ?
    갸라 2016.09.03 12:01:34
    ㅎㅎ 왠지모르게 기분이 좋군요!

List of Articles
번호 제목 글쓴이 날짜
2744 xe core 분석중, php 정규표현식에 관련해서 질문드립니다. 4 갸라 2016.09.04
2743 도메인에 대해서 잘 아시는분? 12 NEX 2016.09.04
2742 아이피 노출 관련 10 오늘찌 2016.09.04
2741 게시글에 비밀번호 거는 법 3 데버 2016.09.03
2740 특정게시판만 원하는 이미지 노출 9 세희타운 2016.09.03
2739 [XECon + PHPFest 2014] Session 3-2 : ElasticSearch를 이용한 통합검색 구축방법 2 이성민 2016.09.03
2738 경험치 시스템 모듈 1 보고하비 2016.09.03
2737 이런걸 여기 여쭤봐도 될지 모르겠지만... 2 file 윤체리 2016.09.02
2736 라이믹스 ' 삭제된 댓글입니다' 표시기능 5 고라자 2016.09.02
2735 빵메뉴라는게 뭔가요? 4 file 데버 2016.09.02
» xe core 분석중, _replacePath 부분을 보는데 뭘 의미하는지 잘 모르겠네요 4 갸라 2016.09.02
2733 act 허용 애드온은 없나요? 5 기븐 2016.09.02
2732 $oDocument->getExtraEidValue('확장변수명') XE 어떤 버전 부터 지원하나요? 2 구름이 2016.09.02
2731 현재 보고 있는게시판의 주소를 가져오려고 하는데 이게 맞나요? 2 이성민 2016.09.02
2730 Document 모듈에서 비공개와 비밀의 차이점이 뭘까요... 3 과니 2016.09.02
2729 ssl 인증서 설치후 리다이렉트오류.. 2 뚜방 2016.09.02
2728 모듈의 info.xml 출력 하는 방법이 궁금합니다. 5 구름이 2016.09.01
2727 Cozy Home 레이아웃 관련 5 동시성 2016.09.01
2726 사이트 운영에 대해 고수님들께 조언을 구하고자 합니다. 8 RADIX 2016.09.01
2725 로그인 후 그룹별로 다른 페이지로 이동하기 2 디지털리스트 2016.09.01
Board Pagination Prev 1 ... 83 84 85 86 87 88 89 90 91 92 ... 225 Next
/ 225
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...