인터넷정보

[함수] 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
반응형