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
번호 분류 제목 날짜
공지 질문/답변 답변을 확실히 받기위한 질문자 지침서 20 2015.12.31
2756 질문/답변 스케치북 5 스킨 댓글 이전 입력내용 쿠키에 남기는 기능 없애려면? 6 2016.09.06
2755 질문/답변 클플 디도스 체크하는걸 우회 할수 있을까요? 1 2016.09.05
2754 질문/답변 opcache 메모리설정 질문 2 2016.09.04
2753 질문/답변 라이믹스 코어 기본 부트스트랩 rhymix.scss 제거법. 2 2016.09.04
2752 질문/답변 홈페이지 하단 Copyright 바의 가운데 정렬을 하고 싶어요. 9 file 2016.09.04
2751 질문/답변 구글개발자 코드로 디버그 해보려고 하는데 . 1 file 2016.09.04
2750 질문/답변 게시판 자체에 비밀번호를 걸 수 있을까요? 4 2016.09.04
2749 질문/답변 스케치북 게시판에서 제목색깔과 굵기 적용이 '모든 사용자' 선택을 하면 적용이 안되네요 2016.09.04
2748 질문/답변 댓글수신표시 애드온 목록에서 동작하려고 하면....? 2 2016.09.04
2747 질문/답변 xe core 분석중, php 정규표현식에 관련해서 질문드립니다. 4 2016.09.04
2746 질문/답변 도메인에 대해서 잘 아시는분? 12 2016.09.04
2745 질문/답변 아이피 노출 관련 10 2016.09.04
2744 질문/답변 게시글에 비밀번호 거는 법 3 2016.09.03
2743 질문/답변 특정게시판만 원하는 이미지 노출 9 2016.09.03
2742 질문/답변 [XECon + PHPFest 2014] Session 3-2 : ElasticSearch를 이용한 통합검색 구축방법 2 2016.09.03
2741 질문/답변 경험치 시스템 모듈 1 2016.09.03
2740 질문/답변 이런걸 여기 여쭤봐도 될지 모르겠지만... 2 file 2016.09.02
2739 질문/답변 라이믹스 ' 삭제된 댓글입니다' 표시기능 5 2016.09.02
2738 질문/답변 빵메뉴라는게 뭔가요? 4 file 2016.09.02
» 질문/답변 xe core 분석중, _replacePath 부분을 보는데 뭘 의미하는지 잘 모르겠네요 4 2016.09.02
Board Pagination Prev 1 ... 28 29 30 31 32 33 34 35 36 37 ... 170 Next
/ 170
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...