[함수] URL 관리(Template_ 버젼)
인터넷정보2008. 2. 14. 15:58
검색과 관련된 게시판에서 URL을 끌고 다니는 것에 대한 해결책이 자주 나왔었는데요, 오늘의 소스는 템플릿 언더바 용입니다.
템플릿 언더바는 심플한 문법 덕택에 커스텀 함수를 사용할 때나 정규식을 tpl파일에 넣을 때 원하지 않는 결과(파싱 불능)가 나타날 때가 있습니다. 그것을 해결한 정도의 소스입니다.
사용방법 >>>
in tpl file :
1. <a href="{=manage_get('-','topic_id,m')}">"목록"</a> // 목록 링크에서 topic_id와 m만을 제거합니다.
2. <a href="{=manage_get('+','p=$1',.value_)}">{.value_}</a> // 페이징 링크에서 p에 .value_를 넣은 링크를 생성합니다.
in PHP file :
1. $tpl->include_('manage_get'); // 템플릿언더바에서 소스에서 커스텀 함수를 쓰기 위해...
echo '<a href="'.manage_get('+', 'a=$1&b=$2', 'nd', 'f').'">asdf</a>'; // a=nd&b=f를 추가합니다. 물론 기존에 있다면 덮어씌워집니다.
<?php
function manage_get($m, $get) {
$tmp = '';
switch($m) {
case '-':
$get_array = explode(',', $get);
if(!empty($_GET)) {
foreach($_GET as $key=>$value) {
if(!in_array($key, $get_array)) $tmp .= $key.'='.$value.'&';
}
}
if($tmp == '') return preg_replace('/\?.+/', '', $_SERVER['REQUEST_URI']);
return '?'.preg_replace('/&$/', '', $tmp);
break;
case '+':
default:
$arg_list = func_get_args();
$numargs = func_num_args();
if($numargs > 2) {
for($i=0; $i < $numargs-2; $i++)
$get = preg_replace('/\$'.($i+1).'/', $arg_list[$i+2], $get);
}
preg_match_all('/[?&]([^=]+)=/', '?'.$get, $get_array);
if(empty($_GET))
return '?'.$get;
else {
foreach($_GET as $key=>$value) {
if(!in_array($key, $get_array[1])) $tmp .= $key.'='.$value.'&';
}
return '?'.$tmp.$get;
}
break;
}
}
?>
사용 문법이 Pearl(^^) 같지 않습니까? (도망.. =3=3=3)
출처:http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=59420&page=1
템플릿 언더바는 심플한 문법 덕택에 커스텀 함수를 사용할 때나 정규식을 tpl파일에 넣을 때 원하지 않는 결과(파싱 불능)가 나타날 때가 있습니다. 그것을 해결한 정도의 소스입니다.
사용방법 >>>
in tpl file :
1. <a href="{=manage_get('-','topic_id,m')}">"목록"</a> // 목록 링크에서 topic_id와 m만을 제거합니다.
2. <a href="{=manage_get('+','p=$1',.value_)}">{.value_}</a> // 페이징 링크에서 p에 .value_를 넣은 링크를 생성합니다.
in PHP file :
1. $tpl->include_('manage_get'); // 템플릿언더바에서 소스에서 커스텀 함수를 쓰기 위해...
echo '<a href="'.manage_get('+', 'a=$1&b=$2', 'nd', 'f').'">asdf</a>'; // a=nd&b=f를 추가합니다. 물론 기존에 있다면 덮어씌워집니다.
<?php
function manage_get($m, $get) {
$tmp = '';
switch($m) {
case '-':
$get_array = explode(',', $get);
if(!empty($_GET)) {
foreach($_GET as $key=>$value) {
if(!in_array($key, $get_array)) $tmp .= $key.'='.$value.'&';
}
}
if($tmp == '') return preg_replace('/\?.+/', '', $_SERVER['REQUEST_URI']);
return '?'.preg_replace('/&$/', '', $tmp);
break;
case '+':
default:
$arg_list = func_get_args();
$numargs = func_num_args();
if($numargs > 2) {
for($i=0; $i < $numargs-2; $i++)
$get = preg_replace('/\$'.($i+1).'/', $arg_list[$i+2], $get);
}
preg_match_all('/[?&]([^=]+)=/', '?'.$get, $get_array);
if(empty($_GET))
return '?'.$get;
else {
foreach($_GET as $key=>$value) {
if(!in_array($key, $get_array[1])) $tmp .= $key.'='.$value.'&';
}
return '?'.$tmp.$get;
}
break;
}
}
?>
사용 문법이 Pearl(^^) 같지 않습니까? (도망.. =3=3=3)
출처:http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=59420&page=1
'인터넷정보' 카테고리의 다른 글
Header("Content-type: text/xml"); (0) | 2008.02.26 |
---|---|
[스크립트] 동적 테이블 (최하단행추가,특정행삭제) (0) | 2008.02.19 |
GD 이미지 및 랜덤 함수를 이용한 스팸광고 글쓰기 막기 (0) | 2008.02.19 |
확장자(파일)에 연결프로그램 등록/초기화/변경이 잘 안되면 이렇게.. (0) | 2008.02.18 |
양력/음력 간지,절기,띠,국경일,기념일 MySql DB 자료 (0) | 2008.02.16 |
자바스크립트 정규식을 바로 확인할 수 있는 웹 도구들 모음 (0) | 2008.02.14 |
[PHP함수] 현재 배열이 몇차원 배열인가를 리턴해 줍니다. (0) | 2008.02.14 |
즐겨찾기 및 시작페이지 추가 IE FF모두 가능 (0) | 2008.02.14 |
[스크립트] 달력 3개월치 (alee 님꺼 수정) (0) | 2008.02.14 |
[보안] php 보안관련 켑챠 (0) | 2008.02.14 |