phpsource/템플릿2006. 10. 9. 10:45
written: Jan 28 2002
last modified: Nov 09 2006
템플릿 파일에서 특수문자를 표현하는 방법
템플릿 파일에서 특수하게 사용하고 있는 몇몇 특수문자를 특수문자가 아닌 그 문자 자체의 의미로 사용하려면 특수 문자 앞에 역슬래시(\) 문자를 붙여 escape시켜야 합니다. 후키템플릿에서 escape시켜야 하는 특수문자로는 '{', '}', '|'(수직바), ','(콤마), ' '(스페이스)가 있습니다.
0.0.3 버전부터는 특수문자('{', '}', '|')를 템플릿 파일에 삽입하기 위해서는 템플릿 파일 어느 곳이든지 상관없이 앞에다 역슬래시(\)를 붙여주면 됩니다. 이전 버전에서는 그 위치에 많은 제한을 받고 있습니다.
1.0.0 버전부터는 나타낼 수 있는 특수문자로 콤마 및 스페이스 문자가 추가되었습니다.
'{' - 열린 중괄호
'}' - 닫힌 중괄호
'|' - 수직바
',' - 콤마
' ' - 스페이스 문자
스페이스 문자(' ')는 조건변수(스위치문) 안에서만 쓰이는 특수문자이고 나머지는 템플릿 파일 전체에서 쓰이는 특수문자입니다.
특수문자의 용법
특수문자 '{' 와 '}'
특수문자 '{'는 템플릿 파일에서 템플릿 변수를 나타내는데 사용됩니다. 때에 따라서는 특수문자 '{'를 템플릿 변수가 아닌 그 문자 그대로를 나타낼 필요가 있겠지요. 이런 경우에 특수문자 '{' 앞에 역슬래시(\)를 붙이게 되면 템플릿 변수로 해석하지 않고 일반문자 '{'로 화면에 나타낼 수 있습니다. 예를 들어 템플릿 파일을 아래와 같이 작성하였다고 하지요.
<P>\{TITLE\}은 템플릿 변수를 의미합니다.</P>
이 템플릿 파일을 파싱한 후 출력하면 화면에는 아래와 같이 보일 것입니다.
{TITLE}은 템플릿 변수를 의미합니다.
그러나 만약 '{' 문자를 escape하지 않고 아래와 같이 '{TITLE}'라고 기술한 경우를 생각해 보겠습니다.
<P>{TITLE}은 템플릿 변수를 의미합니다.</P>
이 템플릿 파일을 파싱한 후 출력하면 "{TITLE}"라는 문자 자체가 나타나지 않고 템플릿 변수로 해석하여 assign() 함수로 지정된 값으로 처리되었을 것입니다. assign() 함수로 지정된 값이 없었다면 아래와 같이 빈문자열로 처리될 것입니다.
은 템플릿 변수를 의미합니다.
'{'  문자와는 달리 '}' 문자의 경우는 escape를 시키지 않더라도 별 문제없이 나타낼 수 있습니다. 그러나 0.0.3부터 지원하기 시작한 템플릿 변수에 초기값을 지정할 때 초기값 내에서 '}' 문자를 나타내기 위해서는 반드시 escape 시켜야 합니다.
{ROW;;이곳에 초기값을 설정하면 템플릿 변수 \{ROW\}에 초기값이 할당됨}
초기값을 지정하는 위치가 아닌 곳은 이전과 같이 '}'에 대하여는 escape를 시키지 않아도 되나 전체적인 표기의 통일을 위하고 향후 버전의 호환성을 위해 무조건 escape를 시킬 것을 권합니다.
특수문자 ','
특수문자 ','(콤마)는 템플릿 파일에서 조건변수(스위치문)를 나타내는데 사용됩니다. 때에 따라서는 특수문자 ','를 특수문자가 아닌 그 문자 그대로를 나타낼 필요가 있겠지요. 이런 경우에 특수문자 ',' 앞에 역슬래시(\)를 붙이게 되면 switch문에서 사용하는 특수문자로 해석하지 않고 일반문자 ','로 화면에 나타낼 수 있습니다.
예를 들어 템플릿 파일을 아래와 같이 작성한 경우를 생각해 보겠습니다.
변수의 초기값에 \,를 사용한 예 : {COMMA;;초기값으로 콤마(\,)를 넣을 수 있음}
이 템플릿 파일을 파싱한 후 템플릿 변수 {COMMA}에 아무값도 할당하지 않으면 아래와 같이 초기값인 '초기값으로 콤마(,)를 넣을 수 있음'이 출력됩니다.
변수의 초기값에 ,를 사용한 예 : 초기값으로 콤마(,)를 넣을 수 있음
특수문자 ','(콤마)는 1.0.0 버전부터 정상적으로 출력할 수 있습니다.
1.2.0 버전부터 지원되는 아래와 같은 형식에서는 콤마(,)를 이스케이프하지 않아도 됩니다.
{?SW;;=|userfunc('arg1','arg2');} 사과 | 배 {/}
특수문자 '|'
특수문자 '|'(수직바)는 템플릿 파일에서 복수 case문을 나타내는데 사용됩니다. 때에 따라서는 특수문자 '|'를 특수문자가 아닌 그 문자 그대로를 나타낼 필요가 있겠지요. 이런 경우에 특수문자 '|' 앞에 역슬래시(\)를 붙이게 되면 복수 case문으로 해석하지 않고 일반문자 '|'로 화면에 나타낼 수 있습니다.
[0.0.2버전] 특수문자 "{"와는 달리 특수문자 '|'는 템플릿 파일 모든 영역에서 이와 같이 해석되지는 않고 단지 조건변수(스위치문) 안에서만 escape시켜야 합니다. 조건변수(스위치문) 밖에서 '\|'라고 하게 되면 '|'라고 출력되는 것이 아니라 '\|'라는 문자가 그대로 출력됩니다.
[0.0.3버전] 0.0.2 버전과는 달리 특수문자 '|'는 템플릿 파일 모든 영역에서 반드시 escape시켜주십시요. 조건변수(스위치문) 밖에서 '\|'라고 하게 되면 이전 버전과는 달리 '\|'라고 출력되는 것이 아니라 '|'문자만 출력됩니다. 조건변수(스위치문) 안에서만 escape시키고 그 밖에서는 escape시키지 않더라도 별문제 없이 나타낼 수 있으나 특수문자 '{', '}' 와 마찬가지로 전체적인 표기의 통일을 위하여 그리고 향후 버전의 호환성을 위해 무조건 escape를 시킬 것을 권합니다.
예를 들어 템플릿 파일을 아래와 같이 작성한 경우를 생각해 보겠습니다.
복수 case문에서 \|를 사용한 예 : {VAR, \|case-1\| | \|case-2\| | \|case-3\|}
이 템플릿 파일을 파싱한 후 템플릿 변수 {VAR}에 2를 할당한 후 출력하면 화면에는 아래와 같이 보일 것입니다.
복수 case문에서 |를 사용한 예 : |case-2|
스페이스 문자 " "
스페이스 문자는 조건변수(스위치문)의 각 case 값 앞뒤에 스페이스 문자를 붙일 수 있도록 해줍니다.
템플릿 파일에 조건변수 COLOR가 아래와 같이 정의되어 있는 경우의 예를 들어 보겠습니다. 이 때 조건변수 COLOR 값이 1이면 '파란색', 2면 '빨간색', 3이면 '노랑색', 4면 '하늘색', 5이면 '초록색'이 출력됩니다. 이 때 각 case 값 앞뒤에 있는 스페이스 문자는 모두 없어집니다.
{COLOR,
파란색 |
빨간색 |
노랑색 |
하늘색 |
초록색
}
만약 각 case 값 앞뒤에 스페이스 문자를 넣고 싶다면 아래와 같이 역슬래쉬로 스페이스 문자를 escape시킵니다. 그러면 조건변수 COLOR 값이 1이면 ' 파란색 ', 2면 ' 빨간색 ', 3이면 ' 노랑색 ', 4면 ' 하늘색 ', 5이면 ' 초록색 '이 출력됩니다. 각 case 값 앞뒤에 있는 스페이스 문자가 그대로 유지됩니다.
{COLOR,
\ 파란색\ |
\ 빨간색\ |
\ 노랑색\ |
\ 하늘색\ |
\ 초록색\
}

Posted by 방글24