2011-10-09 3 views
0

현재 URL 축소 스크립트에서 Google 웹 로그 분석의 UTM 변수를 추적 할 수있게하려고합니다. 나는 또한 내 자신의 (캠페인/키워드/소스/etc ...) 변수를 제공하고 싶다.설정되는 값에 따라 배열 값 병합

$ _GET을 살펴보고 "승인 된"키/값 쌍을 선택하고 UTM 변수의 우선 순위가 더 높은 조건으로 각 키를 설정합니다 (단 하나의 값만 데이터베이스에 저장하려고합니다).

내 코드 현재 :

//Parse $_GET and only get the key/pairs that we need and store them in global $url_params for use through out the script 
function set_url_params($allowed=NULL) { // $allowed is arg to add new values in future dev 
global $url_params; 

$allowed = array( 
    'l', // Redirect key (e.g http://example.com?l=a1dFd7) 
    'utm_campaign', 
    'campaign', 
    'utm_source' , 
    'source', 
    'utm_medium', 
    'medium', 
    'utm_term', 
    'term', 
    'keyword', 
    'kw', 
    ); 

    $approved = array_intersect_key($_GET, array_flip($allowed)); 

    foreach($approved as $key => $value) { 
     strip_tags(urldecode(trim($value))); 
     $url_params[$key] = $value; 
    } 

    //Assign variables to global $url_params variable so other functions can use them. 
    //NOTE: Google Analytics UTM parameters take precedence over script values. 
    $url_params['l'] = isset($approved['l']) ? $approved['l'] : NULL ; 
    $url_params['campaign'] = isset($approved['utm_campaign']) ? $approved['utm_campaign'] : $approved['campaign']; 
    $url_params['source'] = isset($approved['utm_source']) ? $approved['utm_source'] : $approved['source']; 
    $url_params['medium'] = isset($approved['utm_medium']) ? $approved['utm_medium'] : $approved['medium']; 
    $url_params['term'] = isset($approved['utm_term']) ? $approved['utm_term'] : $approved['term']; 
    $url_params['keyword'] = isset($approved['keyword']) ? $approved['keyword'] : $approved['kw']; 
    // Just in case $url_params doesn't have a 'keyword' set, we will use 'term' instead. 
    $url_params['keyword'] = isset($url_params['keyword']) ? $url_params['keyword'] : $url_params['term']; 

} 

나는 기본적으로()의 모든는 isset없이이 일을 깨끗한 방법을 찾아야합니다. unset 변수에 대해 NOTICE 에러 (E_ALL로 실행)를 얻습니다. 그래서 unset 변수를 설정하지 않으려 고합니다.

답변

0

아마이 라인을 따라 뭔가?

$params = array(
    'l'  => array('default' => null), 
    'campaign' => array('default' => null, 'alt' => 'utm_campaign'), 
    ... 
); 

$url_params = array(); 

foreach ($params as $key => $info) { 
    $url_params[$key] = $info['default']; 
    if (isset($info['alt'], $_GET[$info['alt']])) { 
     $url_params[$key] = $_GET[$info['alt']]; 
    } 
    if (isset($_GET[$key]) { 
     $url_params[$key] = $_GET[$key]; 
    } 
} 
관련 문제