웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[php] 스킨 해석&출력...
2002.09.01 16:29
http://extiz.com/skinparser예제 : http://extiz.com/skinparser/view.php
예제 소스 : http://extiz.com/skinparser/view.txt
해석함수 소스 : http://extiz.com/skinparser/lib.txt
스킨파일 : http://extiz.com/skinparser/view.htm
미리 만들어진, 출력할 데이터가 들어있는 배열을
스킨파일과 샤샤샥 합쳐서 출력해주는 함수들입니다...
간단한 설명을 드리자면..
1.문자열해석 함수로 스킨파일을 보냅니다.
2.함수에서 첫번째 태그를 발견하면 그 태그 이전의 일반 문자열들을 출력합니다.
3.태그의 모드(변수,반복문,조건문)에 따라 각각의 처리 함수로 보냅니다.
4.처리한 태그의 뒷부분부터 끝까지를 잘라서 재귀호출합니다.
5.처리할 태그가 없으면 출력합니다.
..변수 처리 함수는 그냥 넘어온 변수 이름을 데이터 배열에서 찾아
뿌려줍니다.
..조건문 처리 함수는 넘어온 변수 이름을 데이터 배열에서 찾아
값이 있을때 문자열을 파싱함수로 보냅니다.
..반복문 처리 함수는 넘어온 변수 이름을 데이터 배열에서 찾아
원소의 갯수만큼 문자열을 파싱함수로 보내는 동작을 반복합니다.
장점 :
* 디자이너나 스킨 제작자가 만들기에 상당히 편합니다. html 태그처럼 쓸수 있습니다..
* 무한대의 다중 반복&조건문이 됩니다.. (정밀한 테스트는 안해봤습니다 ㅡㅡ;)
* 아무나 퍼다 써도 됩니다....-_-
단점 :
* 속도가 느립니다... ㅠㅠ
* 기타 여러가지 단점이 많습니다.. (모르겠음..ㅡㅡ;)
* 소스가 개떡같슴다-_-
변수 출력은 이렇게 합니다.
<!--{VAR:ahehheh}-->
그럼 배열의 ahehheh 이라는 키를 가진 배열의 값을 출력합니다.
저 부분이 조건문이나 반복문 안에 있다면 알아서 그 하위의
변수를 출력합니다.
조건문은
<!--{IF:info}-->
메일 : <!--{VAR:email}--> 홈페이지 : <!--{VAR:site}-->
<!--{/IF:info}-->
위와같이 사용합니다.
원소가 하나라도 있다면 IF태그 사이의 문자열을 출력합니다.
반복문은..
<!--{LOOP:comments}-->
이름 : <!--{VAR:name}--> 내용 : <!--{VAR:content}-->
<!--{/LOOP:comments}-->
이렇게 사용합니다. 각각 comments 의 원소 갯수만큼 반복합니다.
예제 소스 : http://extiz.com/skinparser/view.txt
해석함수 소스 : http://extiz.com/skinparser/lib.txt
스킨파일 : http://extiz.com/skinparser/view.htm
미리 만들어진, 출력할 데이터가 들어있는 배열을
스킨파일과 샤샤샥 합쳐서 출력해주는 함수들입니다...
간단한 설명을 드리자면..
1.문자열해석 함수로 스킨파일을 보냅니다.
2.함수에서 첫번째 태그를 발견하면 그 태그 이전의 일반 문자열들을 출력합니다.
3.태그의 모드(변수,반복문,조건문)에 따라 각각의 처리 함수로 보냅니다.
4.처리한 태그의 뒷부분부터 끝까지를 잘라서 재귀호출합니다.
5.처리할 태그가 없으면 출력합니다.
..변수 처리 함수는 그냥 넘어온 변수 이름을 데이터 배열에서 찾아
뿌려줍니다.
..조건문 처리 함수는 넘어온 변수 이름을 데이터 배열에서 찾아
값이 있을때 문자열을 파싱함수로 보냅니다.
..반복문 처리 함수는 넘어온 변수 이름을 데이터 배열에서 찾아
원소의 갯수만큼 문자열을 파싱함수로 보내는 동작을 반복합니다.
장점 :
* 디자이너나 스킨 제작자가 만들기에 상당히 편합니다. html 태그처럼 쓸수 있습니다..
* 무한대의 다중 반복&조건문이 됩니다.. (정밀한 테스트는 안해봤습니다 ㅡㅡ;)
* 아무나 퍼다 써도 됩니다....-_-
단점 :
* 속도가 느립니다... ㅠㅠ
* 기타 여러가지 단점이 많습니다.. (모르겠음..ㅡㅡ;)
* 소스가 개떡같슴다-_-
변수 출력은 이렇게 합니다.
<!--{VAR:ahehheh}-->
그럼 배열의 ahehheh 이라는 키를 가진 배열의 값을 출력합니다.
저 부분이 조건문이나 반복문 안에 있다면 알아서 그 하위의
변수를 출력합니다.
조건문은
<!--{IF:info}-->
메일 : <!--{VAR:email}--> 홈페이지 : <!--{VAR:site}-->
<!--{/IF:info}-->
위와같이 사용합니다.
원소가 하나라도 있다면 IF태그 사이의 문자열을 출력합니다.
반복문은..
<!--{LOOP:comments}-->
이름 : <!--{VAR:name}--> 내용 : <!--{VAR:content}-->
<!--{/LOOP:comments}-->
이렇게 사용합니다. 각각 comments 의 원소 갯수만큼 반복합니다.
그러니까, <!--{LOOP:comments}-->를 <? while($record=read_comment($data)) { ?>과 같이 치환해주고.. 마지막에 eval("?>".$code."<?");로 실행하는거죠.
에에. 뭐;; 그런 겝니다. (타탕)